summaryrefslogtreecommitdiffstats
path: root/lib/bcd.c
diff options
context:
space:
mode:
authorBrian Norris <briannorris@chromium.org>2017-04-20 15:36:25 -0500
committerBjorn Helgaas <bhelgaas@google.com>2017-04-28 10:38:00 -0500
commita5f40e8098fe6d983fdb3beb7b50a8067c136141 (patch)
treea98617d22761b5b620ac2af829e15f9afe6d00ea /lib/bcd.c
parentef1b5dad5a386885998d11eb45ca7fd183079965 (diff)
downloadlinux-stable-a5f40e8098fe6d983fdb3beb7b50a8067c136141.tar.gz
linux-stable-a5f40e8098fe6d983fdb3beb7b50a8067c136141.tar.bz2
linux-stable-a5f40e8098fe6d983fdb3beb7b50a8067c136141.zip
PCI: Don't allow unbinding host controllers that aren't prepared
Many PCI host controller drivers aren't prepared to have their devices unbound from them forcefully (e.g., through /sys/.../<driver>/unbind), as they don't provide any driver .remove callback, where they'd detach the root bus, release resources, etc. Keeping the driver built in (i.e., not a loadable module) is not enough; and providing no .remove callback just means we don't do any teardown. To rule out the possibility of unbinding a device via sysfs, we need to set the ".suppress_bind_attrs" field. I found the suspect drivers via the following search: git grep -l platform_driver $(git grep -L -e '\.remove' -e suppress_bind_attrs drivers/pci/) Then I inspected them to ensure that (a) they set up a PCI bus in their probe() and (b) they don't have a remove() callback for undoing the setup Suggested-by: Bjorn Helgaas <helgaas@kernel.org> Signed-off-by: Brian Norris <briannorris@chromium.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'lib/bcd.c')
0 files changed, 0 insertions, 0 deletions