diff options
author | Ingo Molnar <mingo@kernel.org> | 2019-05-03 12:52:45 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2019-05-03 12:52:45 +0200 |
commit | 176d2323c7743e03e3bb4298b6f25eea2f00fed0 (patch) | |
tree | c751cba895aa8870372c97c8340166de079eae8e /drivers/pci/pci.c | |
parent | 9b019acb72e4b5741d88e8936d6f200ed44b66b2 (diff) | |
parent | ea9866793d1e925b4d320eaea409263b2a568f38 (diff) | |
download | talos-op-linux-176d2323c7743e03e3bb4298b6f25eea2f00fed0.tar.gz talos-op-linux-176d2323c7743e03e3bb4298b6f25eea2f00fed0.zip |
Merge branch 'linus' into sched/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/pci/pci.c')
-rw-r--r-- | drivers/pci/pci.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 7c1b362f599a..766f5779db92 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -6262,8 +6262,7 @@ static int __init pci_setup(char *str) } else if (!strncmp(str, "pcie_scan_all", 13)) { pci_add_flags(PCI_SCAN_ALL_PCIE_DEVS); } else if (!strncmp(str, "disable_acs_redir=", 18)) { - disable_acs_redir_param = - kstrdup(str + 18, GFP_KERNEL); + disable_acs_redir_param = str + 18; } else { printk(KERN_ERR "PCI: Unknown option `%s'\n", str); @@ -6274,3 +6273,19 @@ static int __init pci_setup(char *str) return 0; } early_param("pci", pci_setup); + +/* + * 'disable_acs_redir_param' is initialized in pci_setup(), above, to point + * to data in the __initdata section which will be freed after the init + * sequence is complete. We can't allocate memory in pci_setup() because some + * architectures do not have any memory allocation service available during + * an early_param() call. So we allocate memory and copy the variable here + * before the init section is freed. + */ +static int __init pci_realloc_setup_params(void) +{ + disable_acs_redir_param = kstrdup(disable_acs_redir_param, GFP_KERNEL); + + return 0; +} +pure_initcall(pci_realloc_setup_params); |