summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2026-10-30 14:38:34 -1000
committerLinus Torvalds <torvalds@linux-foundation.org>2026-10-30 14:38:34 -1000
commit2a500a04d6f969318c05f46aedb6e73fc1963a00 (patch)
tree4585da0c22128adf3e1fbb9e9a963b52ff17ed7c /drivers
parentac1bf565f140154ee27db56c80f29c9eeb9a77c3 (diff)
parenta287f97d4256b5f5527f5b5a54f8ada55e1482c7 (diff)
Merge tag 'driver-core-7.4-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-coreHEADmaster
Pull more driver core fixes from Danilo Krummrich: - Revert TAINT_FORCED_BIND, introduced to flag manual sysfs bind/unbind operations associated with misleading fuzzing reports. It also taints established workflows, including VFIO device passthrough; a more targeted approach will be revisited after 7.4. - Rate limit synthetic uevent failure messages to prevent log flooding from repeated invalid writes to sysfs uevent files * tag 'driver-core-7.4-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core: Revert "driver core: add TAINT_FORCED_BIND for when userspace manually messes with devices and drivers" driver core: Limit the messages on a refused uevent
Diffstat (limited to 'drivers')
-rw-r--r--drivers/base/bus.c3
-rw-r--r--drivers/base/core.c4
2 files changed, 3 insertions, 4 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index f8759d5c9056..396097fdb316 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -19,7 +19,6 @@
#include <linux/string.h>
#include <linux/mutex.h>
#include <linux/sysfs.h>
-#include <linux/panic.h>
#include "base.h"
#include "power/power.h"
@@ -242,7 +241,6 @@ static ssize_t unbind_store(struct device_driver *drv, const char *buf,
dev = bus_find_device_by_name(bus, NULL, buf);
if (dev && dev->driver == drv) {
- add_taint_module(drv->owner, TAINT_FORCED_BIND, LOCKDEP_STILL_OK);
device_driver_detach(dev);
err = count;
}
@@ -266,7 +264,6 @@ static ssize_t bind_store(struct device_driver *drv, const char *buf,
dev = bus_find_device_by_name(bus, NULL, buf);
if (dev && driver_match_device(drv, dev)) {
- add_taint_module(drv->owner, TAINT_FORCED_BIND, LOCKDEP_STILL_OK);
err = device_driver_attach(drv, dev);
if (!err) {
/* success */
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 5daa88fa724a..cbe05197d4a0 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -2847,7 +2847,9 @@ static ssize_t uevent_store(struct device *dev, const struct device_attribute *a
rc = kobject_synth_uevent(&dev->kobj, buf, count);
if (rc) {
- dev_err(dev, "uevent: failed to send synthetic uevent: %d\n", rc);
+ dev_err_ratelimited(dev,
+ "uevent: failed to send synthetic uevent: %d\n",
+ rc);
return rc;
}