mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
Driver core: change add_uevent_var to use a struct
This changes the uevent buffer functions to use a struct instead of a long list of parameters. It does no longer require the caller to do the proper buffer termination and size accounting, which is currently wrong in some places. It fixes a known bug where parts of the uevent environment are overwritten because of wrong index calculations. Many thanks to Mathieu Desnoyers for finding bugs and improving the error handling. Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Cc: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
8380770c84
commit
7eff2e7a8b
47 changed files with 300 additions and 636 deletions
|
@ -396,28 +396,22 @@ static struct attribute_group wireless_group = {
|
|||
#endif /* CONFIG_SYSFS */
|
||||
|
||||
#ifdef CONFIG_HOTPLUG
|
||||
static int netdev_uevent(struct device *d, char **envp,
|
||||
int num_envp, char *buf, int size)
|
||||
static int netdev_uevent(struct device *d, struct kobj_uevent_env *env)
|
||||
{
|
||||
struct net_device *dev = to_net_dev(d);
|
||||
int retval, len = 0, i = 0;
|
||||
int retval;
|
||||
|
||||
/* pass interface to uevent. */
|
||||
retval = add_uevent_var(envp, num_envp, &i,
|
||||
buf, size, &len,
|
||||
"INTERFACE=%s", dev->name);
|
||||
retval = add_uevent_var(env, "INTERFACE=%s", dev->name);
|
||||
if (retval)
|
||||
goto exit;
|
||||
|
||||
/* pass ifindex to uevent.
|
||||
* ifindex is useful as it won't change (interface name may change)
|
||||
* and is what RtNetlink uses natively. */
|
||||
retval = add_uevent_var(envp, num_envp, &i,
|
||||
buf, size, &len,
|
||||
"IFINDEX=%d", dev->ifindex);
|
||||
retval = add_uevent_var(env, "IFINDEX=%d", dev->ifindex);
|
||||
|
||||
exit:
|
||||
envp[i] = NULL;
|
||||
return retval;
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue