mirror of
https://github.com/torvalds/linux.git
synced 2025-04-09 14:45:27 +00:00
PCI: hotplug: Drop superfluous pci_hotplug_slot_list
The PCI hotplug core keeps a list of all registered slots. Its sole purpose is to WARN() on slot removal if another slot is using the same name. But this can never happen because already on slot creation, an error is returned and multiple messages are emitted if a slot's name is duplicated: pci_hp_register() __pci_hp_register() __pci_hp_initialize() pci_create_slot() kobject_init_and_add() kobject_add_varg() kobject_add_internal() create_dir() sysfs_create_dir_ns() kernfs_create_dir_ns() sysfs_warn_dup() pr_warn("cannot create duplicate filename ...") pr_err("%s failed for %s with -EEXIST, ..."); Drop the superfluous list. Link: https://lore.kernel.org/r/603735bc50eb370bc7f1c358441ac671360bab25.1740501868.git.lukas@wunner.de Signed-off-by: Lukas Wunner <lukas@wunner.de> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
8ff4574cf7
commit
5c8265fa63
@ -18,14 +18,12 @@
|
||||
#include <linux/moduleparam.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/kobject.h>
|
||||
#include <linux/sysfs.h>
|
||||
#include <linux/pagemap.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/mount.h>
|
||||
#include <linux/namei.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/pci_hotplug.h>
|
||||
#include <linux/uaccess.h>
|
||||
@ -42,9 +40,6 @@
|
||||
/* local variables */
|
||||
static bool debug;
|
||||
|
||||
static LIST_HEAD(pci_hotplug_slot_list);
|
||||
static DEFINE_MUTEX(pci_hp_mutex);
|
||||
|
||||
/* Weee, fun with macros... */
|
||||
#define GET_STATUS(name, type) \
|
||||
static int get_##name(struct hotplug_slot *slot, type *value) \
|
||||
@ -375,17 +370,6 @@ static void fs_remove_slot(struct pci_slot *pci_slot)
|
||||
pci_hp_remove_module_link(pci_slot);
|
||||
}
|
||||
|
||||
static struct hotplug_slot *get_slot_from_name(const char *name)
|
||||
{
|
||||
struct hotplug_slot *slot;
|
||||
|
||||
list_for_each_entry(slot, &pci_hotplug_slot_list, slot_list) {
|
||||
if (strcmp(hotplug_slot_name(slot), name) == 0)
|
||||
return slot;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* __pci_hp_register - register a hotplug_slot with the PCI hotplug subsystem
|
||||
* @slot: pointer to the &struct hotplug_slot to register
|
||||
@ -484,10 +468,6 @@ int pci_hp_add(struct hotplug_slot *slot)
|
||||
return result;
|
||||
|
||||
kobject_uevent(&pci_slot->kobj, KOBJ_ADD);
|
||||
mutex_lock(&pci_hp_mutex);
|
||||
list_add(&slot->slot_list, &pci_hotplug_slot_list);
|
||||
mutex_unlock(&pci_hp_mutex);
|
||||
dbg("Added slot %s to the list\n", hotplug_slot_name(slot));
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_hp_add);
|
||||
@ -514,21 +494,9 @@ EXPORT_SYMBOL_GPL(pci_hp_deregister);
|
||||
*/
|
||||
void pci_hp_del(struct hotplug_slot *slot)
|
||||
{
|
||||
struct hotplug_slot *temp;
|
||||
|
||||
if (WARN_ON(!slot))
|
||||
return;
|
||||
|
||||
mutex_lock(&pci_hp_mutex);
|
||||
temp = get_slot_from_name(hotplug_slot_name(slot));
|
||||
if (WARN_ON(temp != slot)) {
|
||||
mutex_unlock(&pci_hp_mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
list_del(&slot->slot_list);
|
||||
mutex_unlock(&pci_hp_mutex);
|
||||
dbg("Removed slot %s from the list\n", hotplug_slot_name(slot));
|
||||
fs_remove_slot(slot->pci_slot);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_hp_del);
|
||||
|
@ -50,7 +50,6 @@ struct hotplug_slot_ops {
|
||||
/**
|
||||
* struct hotplug_slot - used to register a physical slot with the hotplug pci core
|
||||
* @ops: pointer to the &struct hotplug_slot_ops to be used for this slot
|
||||
* @slot_list: internal list used to track hotplug PCI slots
|
||||
* @pci_slot: represents a physical slot
|
||||
* @owner: The module owner of this structure
|
||||
* @mod_name: The module name (KBUILD_MODNAME) of this structure
|
||||
@ -59,7 +58,6 @@ struct hotplug_slot {
|
||||
const struct hotplug_slot_ops *ops;
|
||||
|
||||
/* Variables below this are for use only by the hotplug pci core. */
|
||||
struct list_head slot_list;
|
||||
struct pci_slot *pci_slot;
|
||||
struct module *owner;
|
||||
const char *mod_name;
|
||||
|
Loading…
x
Reference in New Issue
Block a user