On Thu, Jul 21, 2022 at 03:42:36PM +0200, Kumar Kartikeya Dwivedi wrote: > +/* Trusted arguments are those which are meant to be referenced arguments with > + * unchanged offset. It is used to enforce that pointers obtained from acquire > + * kfuncs remain unmodified when being passed to helpers taking trusted args. > + * > + * Consider > + * struct foo { > + * int data; > + * struct foo *next; > + * }; > + * > + * struct bar { > + * int data; > + * struct foo f; > + * }; > + * > + * struct foo *f = alloc_foo(); // Acquire kfunc > + * struct bar *b = alloc_bar(); // Acquire kfunc > + * > + * If a kfunc set_foo_data() wants to operate only on the allocated object, it > + * will set the KF_TRUSTED_ARGS flag, which will prevent unsafe usage like: > + * > + * set_foo_data(f, 42); // Allowed > + * set_foo_data(f->next, 42); // Rejected, non-referenced pointer > + * set_foo_data(&f->next, 42);// Rejected, referenced, but bad offset > + * set_foo_data(&b->f, 42); // Rejected, referenced, but wrong type I think you meant to swap above two comments ? That's what I did while applying. Also fixed typo in Fixes tag in patch 13. It was missing a letter in sha. Since there are 3 other pending patchsets in patchwork that add new kfuncs this cleanup of kfunc registration couldn't have come at better time. Thank you for doing this work.