Linux Documentation
 help / color / mirror / Atom feed
From: Bradley Morgan <brads@mainlining.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Luis Chamberlain <mcgrof@kernel.org>,
	Petr Pavlu <petr.pavlu@suse.com>,
	Daniel Gomez <da.gomez@kernel.org>,
	Sami Tolvanen <samitolvanen@google.com>,
	Aaron Tomlin <atomlin@atomlin.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Randy Dunlap <rdunlap@infradead.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Danilo Krummrich <dakr@kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Aleksandr Nogikh <nogikh@google.com>,
	linux-modules@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org, linux-usb@vger.kernel.org,
	driver-core@lists.linux.dev, linux-trace-kernel@vger.kernel.org,
	Johan Hovold <johan@kernel.org>
Subject: Re: [PATCH v2 0/2] driver core: add TAINT_FORCED_BIND for when userspace manually messes with devices and drivers
Date: Mon, 31 Aug 2026 12:57:40 +0100	[thread overview]
Message-ID: <9AB1C455-143A-4583-AC25-F6989EADBD6D@mainlining.org> (raw)
In-Reply-To: <20260831-bind_taint-v2-0-1082d631213b@linuxfoundation.org>

On 31 August 2026 11:51:45 BST, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>The ability to add and remove devices from a driver through the sysfs

Hello hello hello!!

Right, this may not be a maintainer preference, but this patch is well
needed, and well beneficial.

Please bare I'm on a well deserved vacation, so I didn't review this super
vigourisly.

Reviewed-by: Bradley Morgan <brads@mainlining.org>


>"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
>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.
>
>The flag is 'Y' which was unused, and can remembered as the user is
>"yeeting" the device being operated on here (thrown with force without
>regard for the thing being thrown).
>
>Note, the taint flag gets set _BEFORE_ the bind/unbind callback happens,
>as many times crashes/oops/warnings/failures happen within the callback,
>and the taint flag needs to be there to show what was being attempted.
>If it were to be set after the callback happens, the oops report would
>not properly reflect what foolishness was being attempted.
>
>Fuzzing tools like syzbot, that doesn't have hand-crafted rules to keep
>the tool from hitting bind/unbind, should be run with panic_on_taint
>enabled so that they fall over and don't continue on, thinking that they
>actually found a real issue.
>
>Userspace operations that rely on the bind/unbind files to work around
>the lack of will to upgrade a kernel image to a newer version with
>proper support for new devices, or the lack of will to submit valid
>device ids to driver authors, will still work properly, but now the
>kernel will be flagged in a way that will show that perhaps those users
>should reconsider their behavior and work to have the drivers properly
>support these devices in a "native" manner.
>
>Finally, the bind/unbind files can find real use-after-free issues with
>some drivers by forcing the process to happen virtually without having
>to rely on manual removal processes.  Those real bugs should still be
>worked on, but by adding this taint flag, developers can more easily
>determine bug reports that are actually worth looking at.
>
>Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>---
>Changes in v2:
>- rebase on 7.3-rc1
>- Add changelog text to describe panic_on_taint and how it should be set
>  for tools like syzbot.
>- Add changelog text to describe why 'Y' was picked.
>- Fixes based on sashiko review:
>  - Make add_taint_module() handle a NULL for module pointer, fixing a
>    problem with built-in drivers.
>  - Fix up prototype for when CONFIG_MODULES is disabled so it will
>    actually build properly.
>  - rst table header fixes.
>- Link to v1: https://patch.msgid.link/20260826-bind_taint-v1-0-52b05f4a965c@linuxfoundation.org
>
>To: Luis Chamberlain <mcgrof@kernel.org>
>To: Petr Pavlu <petr.pavlu@suse.com>
>To: Daniel Gomez <da.gomez@kernel.org>
>To: Sami Tolvanen <samitolvanen@google.com>
>To: Aaron Tomlin <atomlin@atomlin.com>
>To: Jonathan Corbet <corbet@lwn.net>
>To: Shuah Khan <skhan@linuxfoundation.org>
>To: Randy Dunlap <rdunlap@infradead.org>
>To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>To: "Rafael J. Wysocki" <rafael@kernel.org>
>To: Danilo Krummrich <dakr@kernel.org>
>To: Steven Rostedt <rostedt@goodmis.org>
>To: Masami Hiramatsu <mhiramat@kernel.org>
>To: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
>Cc: linux-modules@vger.kernel.org
>Cc: linux-kernel@vger.kernel.org
>Cc: linux-doc@vger.kernel.org
>Cc: driver-core@lists.linux.dev
>Cc: linux-trace-kernel@vger.kernel.org
>
>---
>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                        | 10 ++++++
> include/linux/panic.h                         |  3 +-
> include/trace/events/module.h                 |  3 +-
> kernel/module/main.c                          | 16 +++++++--
> kernel/panic.c                                |  5 +--
> tools/debugging/kernel-chktaint               |  8 +++++
> 8 files changed, 69 insertions(+), 31 deletions(-)
>---
>base-commit: cee9395acd8043be0644b25c34bfa86623f2b935
>change-id: 20260825-bind_taint-d4077b870bc4
>
>Best regards,
>--  
>Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>

--- Thanks!
https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/

      parent reply	other threads:[~2026-08-31 11:58 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-31 10:51 [PATCH v2 0/2] driver core: add TAINT_FORCED_BIND for when userspace manually messes with devices and drivers Greg Kroah-Hartman
2026-08-31 10:51 ` [PATCH v2 1/2] module: pull out add_taint_module() to be public Greg Kroah-Hartman
2026-08-31 11:07   ` Greg Kroah-Hartman
2026-08-31 11:14     ` Bradley Morgan
2026-08-31 11:28       ` Greg Kroah-Hartman
2026-08-31 11:38         ` Bradley Morgan
2026-08-31 10:51 ` [PATCH v2 2/2] driver core: add TAINT_FORCED_BIND for when userspace manually messes with devices and drivers Greg Kroah-Hartman
2026-08-31 11:47   ` Aaron Tomlin
2026-08-31 11:57 ` Bradley Morgan [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9AB1C455-143A-4583-AC25-F6989EADBD6D@mainlining.org \
    --to=brads@mainlining.org \
    --cc=atomlin@atomlin.com \
    --cc=corbet@lwn.net \
    --cc=da.gomez@kernel.org \
    --cc=dakr@kernel.org \
    --cc=driver-core@lists.linux.dev \
    --cc=gregkh@linuxfoundation.org \
    --cc=johan@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-modules@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mcgrof@kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=nogikh@google.com \
    --cc=petr.pavlu@suse.com \
    --cc=rafael@kernel.org \
    --cc=rdunlap@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=samitolvanen@google.com \
    --cc=skhan@linuxfoundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox