Staging: hv: vmbus: Show the modalias in /sys/bus/vmbus/devices/*/
Subsystems (2)
PATCH 1/1 Staging: hv: vmbus: Show the modalias in /sys/bus/vmbus/devices/*/
Show a modalias file in /sys/bus/vmbus/devices/*/
Add a helper function to print the same content in modalias and uevent.
--- drivers/staging/hv/vmbus_drv.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-)
drivers/staging/hv/vmbus_drv.c +16 -5
@@ -93,6 +93,14 @@ static void get_channel_info(struct hv_d debug_info.outbound.bytes_avail_towrite; } +#define VMBUS_ALIAS_LEN ((sizeof((struct hv_vmbus_device_id *)0)->guid) * 2) +static void print_alias_name (struct hv_device *hv_dev,char *alias_name) +{ +int i; +for (i =0 ; i <VMBUS_ALIAS_LEN ; i +=2 ) +sprintf (&alias_name[i],"%02x" , hv_dev->dev_type.b[i/2 ]); +} +/* * vmbus_show_device_attr - Show the device attribute in sysfs. *
@@ -105,6 +113,7 @@ static ssize_t vmbus_show_device_attr(st {struct hv_device *hv_dev =device_to_hv_device (dev);struct hv_device_info device_info; +char alias_name[VMBUS_ALIAS_LEN +1 ];memset (&device_info,0 ,sizeof (struct hv_device_info ));
@@ -148,6 +157,9 @@ static ssize_t vmbus_show_device_attr(st device_info.chn_instance.b[13 ], device_info.chn_instance.b[14 ], device_info.chn_instance.b[15]); + }else if (!strcmp (dev_attr->attr.name,"modalias" )) { +print_alias_name (hv_dev, alias_name); +return sprintf (buf,"vmbus:%s\n" , alias_name); }else if (!strcmp (dev_attr->attr.name,"state" )) {return sprintf (buf,"%d\n" , device_info.chn_state); }else if (!strcmp (dev_attr->attr.name,"id" )) {
@@ -204,6 +216,7 @@ static struct device_attribute vmbus_dev__ATTR (class_id,S_IRUGO , vmbus_show_device_attr,NULL ),__ATTR (device_id,S_IRUGO , vmbus_show_device_attr,NULL ),__ATTR (monitor_id,S_IRUGO , vmbus_show_device_attr,NULL ), +__ATTR (modalias,S_IRUGO , vmbus_show_device_attr,NULL ),__ATTR (server_monitor_pending,S_IRUGO , vmbus_show_device_attr,NULL ), __ATTR(server_monitor_latency, S_IRUGO, vmbus_show_device_attr, NULL),
@@ -242,12 +255,10 @@ static struct device_attribute vmbus_devstatic int vmbus_uevent (struct device *device,struct kobj_uevent_env *env) {struct hv_device *dev =device_to_hv_device (device); -int i, ret; -char alias_name[((sizeof ((struct hv_vmbus_device_id *)0 )->guid) +1 ) *2 ]; - -for (i =0 ; i < ((sizeof ((struct hv_vmbus_device_id *)0 )->guid) *2 ); i +=2 ) -sprintf (&alias_name[i],"%02x" , dev->dev_type.b[i/2 ]); +int ret; +char alias_name[VMBUS_ALIAS_LEN +1 ]; +print_alias_name (dev, alias_name); ret =add_uevent_var (env,"MODALIAS=vmbus:%s" , alias_name);return ret; }
Quoted 4 lines · Olaf Hering
Show a modalias file in
/sys/bus/vmbus/devices/*/
Add a helper function to print the same content in modalias and uevent.Signed-off-by Olaf Hering <[email protected]>
Nice idea, thanks for this, one minor nit below:
Quoted 22 lines
--- drivers/staging/hv/vmbus_drv.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-)drivers/staging/hv/vmbus_drv.c +8
-0@@ -93,6 +93,14 @@ static void get_channel_info(struct hv_d debug_info.outbound.bytes_avail_towrite; } +#define VMBUS_ALIAS_LEN ((sizeof((struct hv_vmbus_device_id *)0)->guid) * 2) +static void print_alias_name (struct hv_device *hv_dev,char *alias_name) +{ +int i; +for (i =0 ; i <VMBUS_ALIAS_LEN ; i +=2 ) +sprintf (&alias_name[i],"%02x" , hv_dev->dev_type.b[i/2 ]); +} +/* * vmbus_show_device_attr - Show the device attribute in sysfs. *
drivers/staging/hv/vmbus_drv.c static ssize_t vmbus_show_device_attr(st · line 116
Quoted 4 lines
drivers/staging/hv/vmbus_drv.c +1
-0@@ -105,6 +113,7 @@ static ssize_t vmbus_show_device_attr(st {struct hv_device *hv_dev =device_to_hv_device (dev);struct hv_device_info device_info; +char alias_name[VMBUS_ALIAS_LEN +1 ];
Is that too big to put on the stack? 64 bytes, right? Hm, maybe not.
Wait, hv_device_info is huge, that should be dynamic in the first place. Olaf, not your issue, but KY, want to fix that up?
thanks,
greg k-h
Quoted 7 lines · Greg KH
Review
Quoted 3 lines · Olaf Hering
(quoted diff) +2
-0+#define VMBUS_ALIAS_LEN ((sizeof((struct hv_vmbus_device_id *)0)->guid) * 2) + char alias_name[VMBUS_ALIAS_LEN + 1];Is that too big to put on the stack? 64 bytes, right? Hm, maybe not.
16 * 2 + 1 = 33 bytes.
Olaf
Quoted 49 lines
-----Original Message-----
From: Greg KH [mailto:[email protected]]
Sent: Friday, September 02, 2011 12:36 PM
To: Olaf Hering
Cc: KY Srinivasan; [email protected]; [email protected]; [email protected]
Subject: Re: [PATCH] Staging: hv: vmbus: Show the modalias in/sys/bus/vmbus/devices/*/Quoted 4 lines · Olaf Hering
Show a modalias file in
/sys/bus/vmbus/devices/*/
Add a helper function to print the same content in modalias and uevent.Signed-off-by Olaf Hering <[email protected]>Nice idea, thanks for this, one minor nit below:
drivers/staging/hv/vmbus_drv.c static void get_channel_info(struct hv_d · line 96
Quoted 11 lines
--- drivers/staging/hv/vmbus_drv.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-)drivers/staging/hv/vmbus_drv.c +1
-0@@ -93,6 +93,14 @@ static void get_channel_info(struct hv_d debug_info.outbound.bytes_avail_towrite; } +#define VMBUS_ALIAS_LEN ((sizeof((struct hv_vmbus_device_id *)0)->guid)* 2)
Quoted 11 lines
drivers/staging/hv/vmbus_drv.c +7
-0+static void print_alias_name (struct hv_device *hv_dev,char *alias_name) +{ +int i; +for (i =0 ; i <VMBUS_ALIAS_LEN ; i +=2 ) +sprintf (&alias_name[i],"%02x" , hv_dev->dev_type.b[i/2 ]); +} +/* * vmbus_show_device_attr - Show the device attribute in sysfs. * drivers/staging/hv/vmbus_drv.c static ssize_t vmbus_show_device_attr(st · line 116
Quoted 4 lines
drivers/staging/hv/vmbus_drv.c +1
-0@@ -105,6 +113,7 @@ static ssize_t vmbus_show_device_attr(st {struct hv_device *hv_dev =device_to_hv_device (dev);struct hv_device_info device_info; +char alias_name[VMBUS_ALIAS_LEN +1 ];Is that too big to put on the stack? 64 bytes, right? Hm, maybe not.
Quoted 2 lines
Wait,
hv_device_infois huge, that should be dynamic in the first place. Olaf, not your issue, but KY, want to fix that up?
hv_device_info is about 101 bytes. I will fix this. Greg, if you are applying Olaf's patch, I will generate my patch on top of Olaf's. Let me know.
Regards,
K. Y
Quoted 49 lines · KY Srinivasan
Quoted 49 lines
-----Original Message-----
From: Greg KH [mailto:[email protected]]
Sent: Friday, September 02, 2011 12:36 PM
To: Olaf Hering
Cc: KY Srinivasan; [email protected]; [email protected]; [email protected]
Subject: Re: [PATCH] Staging: hv: vmbus: Show the modalias in/sys/bus/vmbus/devices/*/Quoted 4 lines · Olaf Hering
Show a modalias file in
/sys/bus/vmbus/devices/*/
Add a helper function to print the same content in modalias and uevent.Signed-off-by Olaf Hering <[email protected]>Nice idea, thanks for this, one minor nit below:
drivers/staging/hv/vmbus_drv.c static void get_channel_info(struct hv_d · line 96
Quoted 11 lines
--- drivers/staging/hv/vmbus_drv.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-)drivers/staging/hv/vmbus_drv.c +1
-0@@ -93,6 +93,14 @@ static void get_channel_info(struct hv_d debug_info.outbound.bytes_avail_towrite; } +#define VMBUS_ALIAS_LEN ((sizeof((struct hv_vmbus_device_id *)0)->guid)* 2)
Quoted 11 lines
drivers/staging/hv/vmbus_drv.c +7
-0+static void print_alias_name (struct hv_device *hv_dev,char *alias_name) +{ +int i; +for (i =0 ; i <VMBUS_ALIAS_LEN ; i +=2 ) +sprintf (&alias_name[i],"%02x" , hv_dev->dev_type.b[i/2 ]); +} +/* * vmbus_show_device_attr - Show the device attribute in sysfs. * drivers/staging/hv/vmbus_drv.c static ssize_t vmbus_show_device_attr(st · line 116
Quoted 4 lines
drivers/staging/hv/vmbus_drv.c +1
-0@@ -105,6 +113,7 @@ static ssize_t vmbus_show_device_attr(st {struct hv_device *hv_dev =device_to_hv_device (dev);struct hv_device_info device_info; +char alias_name[VMBUS_ALIAS_LEN +1 ];Is that too big to put on the stack? 64 bytes, right? Hm, maybe not.
Quoted 5 lines
Quoted 2 lines
Wait,
hv_device_infois huge, that should be dynamic in the first place. Olaf, not your issue, but KY, want to fix that up?
hv_device_infois about 101 bytes. I will fix this. Greg, if you are applying Olaf's patch, I will generate my patch on top of Olaf's. Let me know.
I'll take his, and then feel free to send me one on top of that fixing this.
But again, as kernel.org is still down, I can't apply anything until next week at the earliest, sorry.
greg k-h
Quoted 82 lines
-----Original Message-----
From: Olaf Hering [mailto:[email protected]]
Sent: Friday, September 02, 2011 12:26 PM
To: KY Srinivasan
Cc: [email protected]; [email protected]; [email protected]; [email protected]
Subject: [PATCH] Staging: hv: vmbus: Show the modalias in/sys/bus/vmbus/devices/*/Show a modalias file in
/sys/bus/vmbus/devices/*/
Add a helper function to print the same content in modalias and uevent.Signed-off-by Olaf Hering <[email protected]>--- drivers/staging/hv/vmbus_drv.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-)drivers/staging/hv/vmbus_drv.c +8
-0@@ -93,6 +93,14 @@ static void get_channel_info(struct hv_d debug_info.outbound.bytes_avail_towrite; } +#define VMBUS_ALIAS_LEN ((sizeof((struct hv_vmbus_device_id *)0)->guid) * 2) +static void print_alias_name (struct hv_device *hv_dev,char *alias_name) +{ +int i; +for (i =0 ; i <VMBUS_ALIAS_LEN ; i +=2 ) +sprintf (&alias_name[i],"%02x" , hv_dev->dev_type.b[i/2 ]); +} +/* * vmbus_show_device_attr - Show the device attribute in sysfs. *
drivers/staging/hv/vmbus_drv.c +5
-0@@ -105,6 +113,7 @@ static ssize_t vmbus_show_device_attr(st {struct hv_device *hv_dev =device_to_hv_device (dev);struct hv_device_info device_info; +char alias_name[VMBUS_ALIAS_LEN +1 ];memset (&device_info,0 ,sizeof (struct hv_device_info ));@@ -148,6 +157,9 @@ static ssize_t vmbus_show_device_attr(st device_info.chn_instance.b[13 ], device_info.chn_instance.b[14 ], device_info.chn_instance.b[15]); + }else if (!strcmp (dev_attr->attr.name,"modalias" )) { +print_alias_name (hv_dev, alias_name); +return sprintf (buf,"vmbus:%s\n" , alias_name); }else if (!strcmp (dev_attr->attr.name,"state" )) {return sprintf (buf,"%d\n" , device_info.chn_state); }else if (!strcmp (dev_attr->attr.name,"id" )) {@@ -204,6 +216,7 @@ static struct device_attribute vmbus_dev__ATTR (class_id,S_IRUGO , vmbus_show_device_attr,NULL ),__ATTR (device_id,S_IRUGO , vmbus_show_device_attr,NULL ),__ATTR (monitor_id,S_IRUGO , vmbus_show_device_attr,NULL ), +__ATTR (modalias,S_IRUGO , vmbus_show_device_attr,NULL ),__ATTR (server_monitor_pending,S_IRUGO , vmbus_show_device_attr, NULL),__ATTR(server_monitor_latency,
S_IRUGO,vmbus_show_device_attr,
NULL),drivers/staging/hv/vmbus_drv.c +3
-5@@ -242,12 +255,10 @@ static struct device_attribute vmbus_devstatic int vmbus_uevent (struct device *device,struct kobj_uevent_env *env) {struct hv_device *dev =device_to_hv_device (device); -int i, ret; -char alias_name[((sizeof ((struct hv_vmbus_device_id *)0 )->guid) +1 ) * 2]; - -for (i =0 ; i < ((sizeof ((struct hv_vmbus_device_id *)0 )->guid) *2 ); i +=2 ) -sprintf (&alias_name[i],"%02x" , dev->dev_type.b[i/2 ]); +int ret; +char alias_name[VMBUS_ALIAS_LEN +1 ]; +print_alias_name (dev, alias_name); ret =add_uevent_var (env,"MODALIAS=vmbus:%s" , alias_name);return ret;
Quoted 1 line
}