Commit bf62456e authored by Eric Rannaud's avatar Eric Rannaud Committed by Greg Kroah-Hartman
Browse files

uevent: use add_uevent_var() instead of open coding it



Make use of add_uevent_var() instead of (often incorrectly) open coding it.

Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
Signed-off-by: default avatarEric Rannaud <eric.rannaud@gmail.com>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent bdc4960a
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -47,14 +47,13 @@ static int amba_match(struct device *dev, struct device_driver *drv)
static int amba_uevent(struct device *dev, char **envp, int nr_env, char *buf, int bufsz)
{
	struct amba_device *pcdev = to_amba_device(dev);
	int retval = 0, i = 0, len = 0;

	if (nr_env < 2)
		return -ENOMEM;

	snprintf(buf, bufsz, "AMBA_ID=%08x", pcdev->periphid);
	*envp++ = buf;
	*envp++ = NULL;
	return 0;
	retval = add_uevent_var(envp, nr_env, &i,
				buf, bufsz, &len,
				"AMBA_ID=%08x", pcdev->periphid);
	envp[i] = NULL;
	return retval;
}
#else
#define amba_uevent NULL
+6 −8
Original line number Diff line number Diff line
@@ -1163,6 +1163,7 @@ static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp,
	struct unit_directory *ud;
	int i = 0;
	int length = 0;
	int retval = 0;
	/* ieee1394:venNmoNspNverN */
	char buf[8 + 1 + 3 + 8 + 2 + 8 + 2 + 8 + 3 + 8 + 1];

@@ -1176,14 +1177,11 @@ static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp,

#define PUT_ENVP(fmt,val) 					\
do {								\
    	int printed;						\
	envp[i++] = buffer;					\
	printed = snprintf(buffer, buffer_size - length,	\
	retval = add_uevent_var(envp, num_envp, &i,		\
				buffer, buffer_size, &length,	\
				fmt, val);			\
	if ((buffer_size - (length+printed) <= 0) || (i >= num_envp))	\
		return -ENOMEM;					\
	length += printed+1;					\
	buffer += printed+1;					\
	if (retval)						\
		return retval;					\
} while (0)

	PUT_ENVP("VENDOR_ID=%06x", ud->vendor_id);
+11 −16
Original line number Diff line number Diff line
@@ -86,31 +86,26 @@ mmc_bus_uevent(struct device *dev, char **envp, int num_envp, char *buf,
{
	struct mmc_card *card = dev_to_mmc_card(dev);
	char ccc[13];
	int i = 0;

#define add_env(fmt,val)						\
	({								\
		int len, ret = -ENOMEM;					\
		if (i < num_envp) {					\
			envp[i++] = buf;				\
			len = snprintf(buf, buf_size, fmt, val) + 1;	\
			buf_size -= len;				\
			buf += len;					\
			if (buf_size >= 0)				\
				ret = 0;				\
		}							\
		ret;							\
	})
	int retval = 0, i = 0, length = 0;

#define add_env(fmt,val) do {					\
	retval = add_uevent_var(envp, num_envp, &i,		\
				buf, buf_size, &length,		\
				fmt, val);			\
	if (retval)						\
		return retval;					\
} while (0);

	for (i = 0; i < 12; i++)
		ccc[i] = card->csd.cmdclass & (1 << i) ? '1' : '0';
	ccc[12] = '\0';

	i = 0;
	add_env("MMC_CCC=%s", ccc);
	add_env("MMC_MANFID=%06x", card->cid.manfid);
	add_env("MMC_NAME=%s", mmc_card_name(card));
	add_env("MMC_OEMID=%04x", card->cid.oemid);
#undef add_env
	envp[i] = NULL;

	return 0;
}
+13 −15
Original line number Diff line number Diff line
@@ -423,27 +423,25 @@ static int ap_uevent (struct device *dev, char **envp, int num_envp,
		       char *buffer, int buffer_size)
{
	struct ap_device *ap_dev = to_ap_dev(dev);
	int length;
	int retval = 0, length = 0, i = 0;

	if (!ap_dev)
		return -ENODEV;

	/* Set up DEV_TYPE environment variable. */
	envp[0] = buffer;
	length = scnprintf(buffer, buffer_size, "DEV_TYPE=%04X",
			   ap_dev->device_type);
	if (buffer_size - length <= 0)
		return -ENOMEM;
	buffer += length;
	buffer_size -= length;
	retval = add_uevent_var(envp, num_envp, &i,
				buffer, buffer_size, &length,
				"DEV_TYPE=%04X", ap_dev->device_type);
	if (retval)
		return retval;

	/* Add MODALIAS= */
	envp[1] = buffer;
	length = scnprintf(buffer, buffer_size, "MODALIAS=ap:t%02X",
			   ap_dev->device_type);
	if (buffer_size - length <= 0)
		return -ENOMEM;
	envp[2] = NULL;
	return 0;
	retval = add_uevent_var(envp, num_envp, &i,
				buffer, buffer_size, &length,
				"MODALIAS=ap:t%02X", ap_dev->device_type);

	envp[i] = NULL;
	return retval;
}

static struct bus_type ap_bus_type = {
+11 −17
Original line number Diff line number Diff line
@@ -412,31 +412,25 @@ static int netdev_uevent(struct device *d, char **envp,
			 int num_envp, char *buf, int size)
{
	struct net_device *dev = to_net_dev(d);
	int i = 0;
	int n;
	int retval, len = 0, i = 0;

	/* pass interface to uevent. */
	envp[i++] = buf;
	n = snprintf(buf, size, "INTERFACE=%s", dev->name) + 1;
	buf += n;
	size -= n;

	if ((size <= 0) || (i >= num_envp))
		return -ENOMEM;
	retval = add_uevent_var(envp, num_envp, &i,
				buf, size, &len,
				"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. */
	envp[i++] = buf;
	n = snprintf(buf, size, "IFINDEX=%d", dev->ifindex) + 1;
	buf += n;
	size -= n;

	if ((size <= 0) || (i >= num_envp))
		return -ENOMEM;
	retval = add_uevent_var(envp, num_envp, &i,
				buf, size, &len,
				"IFINDEX=%d", dev->ifindex);

exit:
	envp[i] = NULL;
	return 0;
	return retval;
}
#endif

Loading