The ability to add and remove devices from a driver through the sysfs "bind" and "unbind" files was created all those decades ago as a way that kernel developers can iterate faster, and provide a debugging way for users to attempt to add a new device to a driver without having to rebuild their kernel.
This api over the years has been abused and recently come under a major fuzzing "attack" through tools like syzbot which decided that it would attempt to just randomly bind any driver to any type of device, causing loads of unneeded errors and pointless kernel patches to be generated by unsuspecting new developers. Handle all of this by adding a new taint flag, TAINT_FORCED_BIND, which will be set on the driver if the bind/unbind sysfs files are ever successfully written to. This lets kernel developers "know" that a user is attempting to do something that is not normal, and as such, if the kernel breaks they get to keep the shiny pieces laying around on the floor. Signed-off-by: Greg Kroah-Hartman <[email protected]> --- Greg Kroah-Hartman (2): module: pull out add_taint_module() to be public driver core: add TAINT_FORCED_BIND for when userspace manually messes with devices and drivers Documentation/admin-guide/tainted-kernels.rst | 52 ++++++++++++++------------- drivers/base/bus.c | 3 ++ include/linux/module.h | 8 +++++ include/linux/panic.h | 3 +- include/trace/events/module.h | 3 +- kernel/module/main.c | 13 +++++-- kernel/panic.c | 5 +-- tools/debugging/kernel-chktaint | 8 +++++ 8 files changed, 65 insertions(+), 30 deletions(-) --- base-commit: 45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229 change-id: 20260825-bind_taint-d4077b870bc4 Best regards, -- Greg Kroah-Hartman <[email protected]>
