@@ -127,30 +127,6 @@ func disableProg(coll *ebpf.CollectionSpec, name string) {
127127 }
128128}
129129
130- func KprobeOpen (load * Program ) OpenFunc {
131- return func (coll * ebpf.CollectionSpec ) error {
132- // The generic_kprobe_override program is part of bpf_generic_kprobe.o object,
133- // so let's disable it if the override is not configured. Otherwise it gets
134- // loaded and bpftool will show it.
135- if ! load .Override {
136- disableProg (coll , "generic_kprobe_override" )
137- disableProg (coll , "generic_fmodret_override" )
138- } else {
139- if load .OverrideFmodRet {
140- spec , ok := coll .Programs ["generic_fmodret_override" ]
141- if ! ok {
142- return errors .New ("failed to find generic_fmodret_override" )
143- }
144- spec .AttachTo = load .Attach
145- disableProg (coll , "generic_kprobe_override" )
146- } else {
147- disableProg (coll , "generic_fmodret_override" )
148- }
149- }
150- return nil
151- }
152- }
153-
154130func kprobeAttach (load * Program , prog * ebpf.Program , spec * ebpf.ProgramSpec ,
155131 symbol string , bpfDir string , extra ... string ) (unloader.Unloader , error ) {
156132 var linkFn func () (link.Link , error )
@@ -179,105 +155,10 @@ func kprobeAttach(load *Program, prog *ebpf.Program, spec *ebpf.ProgramSpec,
179155 }, nil
180156}
181157
182- func kprobeAttachOverride (load * Program , bpfDir string ,
183- coll * ebpf.Collection , collSpec * ebpf.CollectionSpec ) error {
184-
185- spec , ok := collSpec .Programs ["generic_kprobe_override" ]
186- if ! ok {
187- return errors .New ("spec for generic_kprobe_override program not found" )
188- }
189-
190- prog , ok := coll .Programs ["generic_kprobe_override" ]
191- if ! ok {
192- return errors .New ("program generic_kprobe_override not found" )
193- }
194-
195- prog , err := prog .Clone ()
196- if err != nil {
197- return fmt .Errorf ("failed to clone generic_kprobe_override program: %w" , err )
198- }
199-
200- pinPath := filepath .Join (bpfDir , load .PinPath , "prog_override" )
201-
202- if err := prog .Pin (pinPath ); err != nil {
203- return fmt .Errorf ("pinning '%s' to '%s' failed: %w" , load .Label , pinPath , err )
204- }
205-
206- load .unloaderOverride , err = kprobeAttach (load , prog , spec , load .Attach , bpfDir , "override" )
207- if err != nil {
208- logger .GetLogger ().Warn ("Failed to attach override program" , logfields .Error , err )
209- }
210-
211- return nil
212- }
213-
214- func fmodretAttachOverride (load * Program , bpfDir string ,
215- coll * ebpf.Collection , collSpec * ebpf.CollectionSpec ) error {
216-
217- spec , ok := collSpec .Programs ["generic_fmodret_override" ]
218- if ! ok {
219- return errors .New ("spec for generic_fmodret_override program not found" )
220- }
221-
222- prog , ok := coll .Programs ["generic_fmodret_override" ]
223- if ! ok {
224- return errors .New ("program generic_fmodret_override not found" )
225- }
226-
227- prog , err := prog .Clone ()
228- if err != nil {
229- return fmt .Errorf ("failed to clone generic_fmodret_override program: %w" , err )
230- }
231-
232- pinPath := filepath .Join (bpfDir , filepath .Join (load .PinPath , "prog_override" ))
233-
234- if err := prog .Pin (pinPath ); err != nil {
235- return fmt .Errorf ("pinning '%s' to '%s' failed: %w" , load .Label , pinPath , err )
236- }
237-
238- linkFn := func () (link.Link , error ) {
239- return link .AttachTracing (link.TracingOptions {
240- Program : prog ,
241- })
242- }
243-
244- lnk , err := linkFn ()
245- if err != nil {
246- return fmt .Errorf ("attaching '%s' failed: %w" , spec .Name , err )
247- }
248-
249- err = linkPin (lnk , bpfDir , load , "override" )
250- if err != nil {
251- lnk .Close ()
252- return err
253- }
254-
255- load .unloaderOverride = & unloader.RelinkUnloader {
256- UnloadProg : unloader.ProgUnloader {Prog : prog }.Unload ,
257- IsLinked : true ,
258- Link : lnk ,
259- RelinkFn : linkFn ,
260- }
261-
262- return nil
263- }
264-
265158func KprobeAttach (load * Program , bpfDir string ) AttachFunc {
266- return func (coll * ebpf.Collection , collSpec * ebpf.CollectionSpec ,
159+ return func (_ * ebpf.Collection , _ * ebpf.CollectionSpec ,
267160 prog * ebpf.Program , spec * ebpf.ProgramSpec ) (unloader.Unloader , error ) {
268161
269- if load .Override {
270- if load .OverrideFmodRet {
271- if err := fmodretAttachOverride (load , bpfDir , coll , collSpec ); err != nil {
272- return nil , err
273- }
274- } else {
275- if err := kprobeAttachOverride (load , bpfDir , coll , collSpec ); err != nil {
276- return nil , err
277- }
278- }
279- }
280-
281162 return kprobeAttach (load , prog , spec , load .Attach , bpfDir )
282163 }
283164}
@@ -569,46 +450,14 @@ func multiKprobeAttach(load *Program, prog *ebpf.Program,
569450}
570451
571452func MultiKprobeAttach (load * Program , bpfDir string ) AttachFunc {
572- return func (coll * ebpf.Collection , collSpec * ebpf.CollectionSpec ,
453+ return func (_ * ebpf.Collection , _ * ebpf.CollectionSpec ,
573454 prog * ebpf.Program , spec * ebpf.ProgramSpec ) (unloader.Unloader , error ) {
574455
575456 data , ok := load .AttachData .(* MultiKprobeAttachData )
576457 if ! ok {
577458 return nil , fmt .Errorf ("attaching '%s' failed: wrong attach data" , spec .Name )
578459 }
579460
580- if load .Override {
581- progOverrideSpec , ok := collSpec .Programs ["generic_kprobe_override" ]
582- if ok {
583- progOverrideSpec .Type = ebpf .UnspecifiedProgram
584- }
585-
586- progOverride , ok := coll .Programs ["generic_kprobe_override" ]
587- if ! ok {
588- return nil , fmt .Errorf ("program for section '%s' not found" , load .Label )
589- }
590-
591- progOverride , err := progOverride .Clone ()
592- if err != nil {
593- return nil , fmt .Errorf ("failed to clone program '%s': %w" , load .Label , err )
594- }
595-
596- pinPath := filepath .Join (bpfDir , filepath .Join (load .PinPath , "prog_override" ))
597-
598- if err := progOverride .Pin (pinPath ); err != nil {
599- return nil , fmt .Errorf ("pinning '%s' to '%s' failed: %w" , load .Label , pinPath , err )
600- }
601-
602- opts := link.KprobeMultiOptions {
603- Symbols : data .Overrides ,
604- }
605-
606- load .unloaderOverride , err = multiKprobeAttach (load , progOverride , progOverrideSpec , opts , bpfDir , "override" )
607- if err != nil {
608- logger .GetLogger ().Warn ("Failed to attach override program" , logfields .Error , err )
609- }
610- }
611-
612461 opts := link.KprobeMultiOptions {
613462 Symbols : data .Symbols ,
614463 Cookies : data .Cookies ,
@@ -637,8 +486,10 @@ func LoadRawTracepointProgram(bpfDir string, load *Program, maps []*Map, verbose
637486func LoadKprobeProgram (bpfDir string , load * Program , maps []* Map , verbose int ) error {
638487 opts := & LoadOpts {
639488 Attach : KprobeAttach (load , bpfDir ),
640- Open : KprobeOpen (load ),
641- Maps : maps ,
489+ Open : func (coll * ebpf.CollectionSpec ) error {
490+ return nil
491+ },
492+ Maps : maps ,
642493 }
643494 return loadProgram (bpfDir , load , opts , verbose )
644495}
@@ -685,8 +536,10 @@ func LoadUprobeProgram(bpfDir string, load *Program, maps []*Map, verbose int) e
685536func LoadMultiKprobeProgram (bpfDir string , load * Program , maps []* Map , verbose int ) error {
686537 opts := & LoadOpts {
687538 Attach : MultiKprobeAttach (load , bpfDir ),
688- Open : KprobeOpen (load ),
689- Maps : maps ,
539+ Open : func (coll * ebpf.CollectionSpec ) error {
540+ return nil
541+ },
542+ Maps : maps ,
690543 }
691544 return loadProgram (bpfDir , load , opts , verbose )
692545}
0 commit comments