Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7bcf5c0e authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

[PATCH] PCI: move pci core to use add_hotplug_env_var()



This fixes a bug in the environment variables for all PCI device hotplug calls.

Thanks to Kay Sievers for pointing out the problem.

Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 2fd9d74b
Loading
Loading
Loading
Loading
+21 −32
Original line number Diff line number Diff line
@@ -20,46 +20,35 @@ int pci_hotplug (struct device *dev, char **envp, int num_envp,

	scratch = buffer;

	/* stuff we want to pass to /sbin/hotplug */
	envp[i++] = scratch;
	length += scnprintf (scratch, buffer_size - length, "PCI_CLASS=%04X",
			    pdev->class);
	if ((buffer_size - length <= 0) || (i >= num_envp))

	if (add_hotplug_env_var(envp, num_envp, &i,
				buffer, buffer_size, &length,
				"PCI_CLASS=%04X", pdev->class))
		return -ENOMEM;
	++length;
	scratch += length;

	envp[i++] = scratch;
	length += scnprintf (scratch, buffer_size - length, "PCI_ID=%04X:%04X",
			    pdev->vendor, pdev->device);
	if ((buffer_size - length <= 0) || (i >= num_envp))
	if (add_hotplug_env_var(envp, num_envp, &i,
				buffer, buffer_size, &length,
				"PCI_ID=%04X:%04X", pdev->vendor, pdev->device))
		return -ENOMEM;
	++length;
	scratch += length;

	envp[i++] = scratch;
	length += scnprintf (scratch, buffer_size - length,
	if (add_hotplug_env_var(envp, num_envp, &i,
				buffer, buffer_size, &length,
				"PCI_SUBSYS_ID=%04X:%04X", pdev->subsystem_vendor,
			    pdev->subsystem_device);
	if ((buffer_size - length <= 0) || (i >= num_envp))
				pdev->subsystem_device))
		return -ENOMEM;
	++length;
	scratch += length;

	envp[i++] = scratch;
	length += scnprintf (scratch, buffer_size - length, "PCI_SLOT_NAME=%s",
			    pci_name(pdev));
	if ((buffer_size - length <= 0) || (i >= num_envp))
	if (add_hotplug_env_var(envp, num_envp, &i,
				buffer, buffer_size, &length,
				"PCI_SLOT_NAME=%s", pci_name(pdev)))
		return -ENOMEM;

	envp[i++] = scratch;
	length += scnprintf (scratch, buffer_size - length,
	if (add_hotplug_env_var(envp, num_envp, &i,
				buffer, buffer_size, &length,
				"MODALIAS=pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02x",
				pdev->vendor, pdev->device,
				pdev->subsystem_vendor, pdev->subsystem_device,
				(u8)(pdev->class >> 16), (u8)(pdev->class >> 8),
			    (u8)(pdev->class));
	if ((buffer_size - length <= 0) || (i >= num_envp))
				(u8)(pdev->class)))
		return -ENOMEM;

	envp[i] = NULL;