Re: [PATCH] device_attributes: add sysfs_attr_init() for dynamic attributes
Mike Isely wrote: Acked-By: Mike Isely is...@pobox.com (in the context of the pvrusb2 driver related changes) Acked-by: Mauro Carvalho Chehab mche...@redhat.com -Mike On Mon, 22 Mar 2010, Wolfram Sang wrote: Made necessary by 6992f5334995af474c2b58d010d08bc597f0f2fe. Found by this semantic patch: @ init @ type T; identifier A; @@ T { ... struct device_attribute A; ... }; @ main extends init @ expression E; statement S; identifier err; T *name; @@ ... when != sysfs_attr_init(name-A.attr); ( + sysfs_attr_init(name-A.attr); if (device_create_file(E, name-A)) S | + sysfs_attr_init(name-A.attr); err = device_create_file(E, name-A); ) While reviewing, I put the initialization to apropriate places. Signed-off-by: Wolfram Sang w.s...@pengutronix.de Cc: Eric W. Biederman ebied...@xmission.com Cc: Greg KH gre...@suse.de Cc: Benjamin Herrenschmidt b...@kernel.crashing.org Cc: Mike Isely is...@pobox.com Cc: Mauro Carvalho Chehab mche...@infradead.org Cc: Sujith Thomas sujith.tho...@intel.com Cc: Matthew Garrett m...@redhat.com --- The thermal-sys.c-part should fix bugs #15548 and #15584. drivers/macintosh/windfarm_core.c |1 + drivers/media/video/pvrusb2/pvrusb2-sysfs.c |8 drivers/platform/x86/intel_menlow.c |1 + drivers/thermal/thermal_sys.c |1 + drivers/video/fsl-diu-fb.c |1 + 5 files changed, 12 insertions(+), 0 deletions(-) diff --git a/drivers/macintosh/windfarm_core.c b/drivers/macintosh/windfarm_core.c index 419795f..f447642 100644 --- a/drivers/macintosh/windfarm_core.c +++ b/drivers/macintosh/windfarm_core.c @@ -209,6 +209,7 @@ int wf_register_control(struct wf_control *new_ct) kref_init(new_ct-ref); list_add(new_ct-link, wf_controls); +sysfs_attr_init(new_ct-attr.attr); new_ct-attr.attr.name = new_ct-name; new_ct-attr.attr.mode = 0644; new_ct-attr.show = wf_show_control; diff --git a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c index 6c23456..71f5056 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c +++ b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c @@ -423,10 +423,12 @@ static void pvr2_sysfs_add_debugifc(struct pvr2_sysfs *sfp) dip = kzalloc(sizeof(*dip),GFP_KERNEL); if (!dip) return; +sysfs_attr_init(dip-attr_debugcmd.attr); dip-attr_debugcmd.attr.name = debugcmd; dip-attr_debugcmd.attr.mode = S_IRUGO|S_IWUSR|S_IWGRP; dip-attr_debugcmd.show = debugcmd_show; dip-attr_debugcmd.store = debugcmd_store; +sysfs_attr_init(dip-attr_debuginfo.attr); dip-attr_debuginfo.attr.name = debuginfo; dip-attr_debuginfo.attr.mode = S_IRUGO; dip-attr_debuginfo.show = debuginfo_show; @@ -644,6 +646,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, return; } +sysfs_attr_init(sfp-attr_v4l_minor_number.attr); sfp-attr_v4l_minor_number.attr.name = v4l_minor_number; sfp-attr_v4l_minor_number.attr.mode = S_IRUGO; sfp-attr_v4l_minor_number.show = v4l_minor_number_show; @@ -658,6 +661,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-v4l_minor_number_created_ok = !0; } +sysfs_attr_init(sfp-attr_v4l_radio_minor_number.attr); sfp-attr_v4l_radio_minor_number.attr.name = v4l_radio_minor_number; sfp-attr_v4l_radio_minor_number.attr.mode = S_IRUGO; sfp-attr_v4l_radio_minor_number.show = v4l_radio_minor_number_show; @@ -672,6 +676,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-v4l_radio_minor_number_created_ok = !0; } +sysfs_attr_init(sfp-attr_unit_number.attr); sfp-attr_unit_number.attr.name = unit_number; sfp-attr_unit_number.attr.mode = S_IRUGO; sfp-attr_unit_number.show = unit_number_show; @@ -685,6 +690,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-unit_number_created_ok = !0; } +sysfs_attr_init(sfp-attr_bus_info.attr); sfp-attr_bus_info.attr.name = bus_info_str; sfp-attr_bus_info.attr.mode = S_IRUGO; sfp-attr_bus_info.show = bus_info_show; @@ -699,6 +705,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-bus_info_created_ok = !0; } +sysfs_attr_init(sfp-attr_hdw_name.attr); sfp-attr_hdw_name.attr.name = device_hardware_type; sfp-attr_hdw_name.attr.mode = S_IRUGO; sfp-attr_hdw_name.show = hdw_name_show; @@ -713,6 +720,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-hdw_name_created_ok = !0; } +sysfs_attr_init(sfp-attr_hdw_desc.attr); sfp-attr_hdw_desc.attr.name = device_hardware_description; sfp-attr_hdw_desc.attr.mode = S_IRUGO; sfp-attr_hdw_desc.show =
Re: [PATCH] device_attributes: add sysfs_attr_init() for dynamic attributes
Acked-By: Mike Isely is...@pobox.com (in the context of the pvrusb2 driver related changes) -Mike On Mon, 22 Mar 2010, Wolfram Sang wrote: Made necessary by 6992f5334995af474c2b58d010d08bc597f0f2fe. Found by this semantic patch: @ init @ type T; identifier A; @@ T { ... struct device_attribute A; ... }; @ main extends init @ expression E; statement S; identifier err; T *name; @@ ... when != sysfs_attr_init(name-A.attr); ( + sysfs_attr_init(name-A.attr); if (device_create_file(E, name-A)) S | + sysfs_attr_init(name-A.attr); err = device_create_file(E, name-A); ) While reviewing, I put the initialization to apropriate places. Signed-off-by: Wolfram Sang w.s...@pengutronix.de Cc: Eric W. Biederman ebied...@xmission.com Cc: Greg KH gre...@suse.de Cc: Benjamin Herrenschmidt b...@kernel.crashing.org Cc: Mike Isely is...@pobox.com Cc: Mauro Carvalho Chehab mche...@infradead.org Cc: Sujith Thomas sujith.tho...@intel.com Cc: Matthew Garrett m...@redhat.com --- The thermal-sys.c-part should fix bugs #15548 and #15584. drivers/macintosh/windfarm_core.c |1 + drivers/media/video/pvrusb2/pvrusb2-sysfs.c |8 drivers/platform/x86/intel_menlow.c |1 + drivers/thermal/thermal_sys.c |1 + drivers/video/fsl-diu-fb.c |1 + 5 files changed, 12 insertions(+), 0 deletions(-) diff --git a/drivers/macintosh/windfarm_core.c b/drivers/macintosh/windfarm_core.c index 419795f..f447642 100644 --- a/drivers/macintosh/windfarm_core.c +++ b/drivers/macintosh/windfarm_core.c @@ -209,6 +209,7 @@ int wf_register_control(struct wf_control *new_ct) kref_init(new_ct-ref); list_add(new_ct-link, wf_controls); + sysfs_attr_init(new_ct-attr.attr); new_ct-attr.attr.name = new_ct-name; new_ct-attr.attr.mode = 0644; new_ct-attr.show = wf_show_control; diff --git a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c index 6c23456..71f5056 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c +++ b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c @@ -423,10 +423,12 @@ static void pvr2_sysfs_add_debugifc(struct pvr2_sysfs *sfp) dip = kzalloc(sizeof(*dip),GFP_KERNEL); if (!dip) return; + sysfs_attr_init(dip-attr_debugcmd.attr); dip-attr_debugcmd.attr.name = debugcmd; dip-attr_debugcmd.attr.mode = S_IRUGO|S_IWUSR|S_IWGRP; dip-attr_debugcmd.show = debugcmd_show; dip-attr_debugcmd.store = debugcmd_store; + sysfs_attr_init(dip-attr_debuginfo.attr); dip-attr_debuginfo.attr.name = debuginfo; dip-attr_debuginfo.attr.mode = S_IRUGO; dip-attr_debuginfo.show = debuginfo_show; @@ -644,6 +646,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, return; } + sysfs_attr_init(sfp-attr_v4l_minor_number.attr); sfp-attr_v4l_minor_number.attr.name = v4l_minor_number; sfp-attr_v4l_minor_number.attr.mode = S_IRUGO; sfp-attr_v4l_minor_number.show = v4l_minor_number_show; @@ -658,6 +661,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-v4l_minor_number_created_ok = !0; } + sysfs_attr_init(sfp-attr_v4l_radio_minor_number.attr); sfp-attr_v4l_radio_minor_number.attr.name = v4l_radio_minor_number; sfp-attr_v4l_radio_minor_number.attr.mode = S_IRUGO; sfp-attr_v4l_radio_minor_number.show = v4l_radio_minor_number_show; @@ -672,6 +676,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-v4l_radio_minor_number_created_ok = !0; } + sysfs_attr_init(sfp-attr_unit_number.attr); sfp-attr_unit_number.attr.name = unit_number; sfp-attr_unit_number.attr.mode = S_IRUGO; sfp-attr_unit_number.show = unit_number_show; @@ -685,6 +690,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-unit_number_created_ok = !0; } + sysfs_attr_init(sfp-attr_bus_info.attr); sfp-attr_bus_info.attr.name = bus_info_str; sfp-attr_bus_info.attr.mode = S_IRUGO; sfp-attr_bus_info.show = bus_info_show; @@ -699,6 +705,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-bus_info_created_ok = !0; } + sysfs_attr_init(sfp-attr_hdw_name.attr); sfp-attr_hdw_name.attr.name = device_hardware_type; sfp-attr_hdw_name.attr.mode = S_IRUGO; sfp-attr_hdw_name.show = hdw_name_show; @@ -713,6 +720,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-hdw_name_created_ok = !0; } + sysfs_attr_init(sfp-attr_hdw_desc.attr); sfp-attr_hdw_desc.attr.name = device_hardware_description; sfp-attr_hdw_desc.attr.mode = S_IRUGO; sfp-attr_hdw_desc.show = hdw_desc_show;
[PATCH] device_attributes: add sysfs_attr_init() for dynamic attributes
Made necessary by 6992f5334995af474c2b58d010d08bc597f0f2fe. Found by this semantic patch: @ init @ type T; identifier A; @@ T { ... struct device_attribute A; ... }; @ main extends init @ expression E; statement S; identifier err; T *name; @@ ... when != sysfs_attr_init(name-A.attr); ( + sysfs_attr_init(name-A.attr); if (device_create_file(E, name-A)) S | + sysfs_attr_init(name-A.attr); err = device_create_file(E, name-A); ) While reviewing, I put the initialization to apropriate places. Signed-off-by: Wolfram Sang w.s...@pengutronix.de Cc: Eric W. Biederman ebied...@xmission.com Cc: Greg KH gre...@suse.de Cc: Benjamin Herrenschmidt b...@kernel.crashing.org Cc: Mike Isely is...@pobox.com Cc: Mauro Carvalho Chehab mche...@infradead.org Cc: Sujith Thomas sujith.tho...@intel.com Cc: Matthew Garrett m...@redhat.com --- The thermal-sys.c-part should fix bugs #15548 and #15584. drivers/macintosh/windfarm_core.c |1 + drivers/media/video/pvrusb2/pvrusb2-sysfs.c |8 drivers/platform/x86/intel_menlow.c |1 + drivers/thermal/thermal_sys.c |1 + drivers/video/fsl-diu-fb.c |1 + 5 files changed, 12 insertions(+), 0 deletions(-) diff --git a/drivers/macintosh/windfarm_core.c b/drivers/macintosh/windfarm_core.c index 419795f..f447642 100644 --- a/drivers/macintosh/windfarm_core.c +++ b/drivers/macintosh/windfarm_core.c @@ -209,6 +209,7 @@ int wf_register_control(struct wf_control *new_ct) kref_init(new_ct-ref); list_add(new_ct-link, wf_controls); + sysfs_attr_init(new_ct-attr.attr); new_ct-attr.attr.name = new_ct-name; new_ct-attr.attr.mode = 0644; new_ct-attr.show = wf_show_control; diff --git a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c index 6c23456..71f5056 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c +++ b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c @@ -423,10 +423,12 @@ static void pvr2_sysfs_add_debugifc(struct pvr2_sysfs *sfp) dip = kzalloc(sizeof(*dip),GFP_KERNEL); if (!dip) return; + sysfs_attr_init(dip-attr_debugcmd.attr); dip-attr_debugcmd.attr.name = debugcmd; dip-attr_debugcmd.attr.mode = S_IRUGO|S_IWUSR|S_IWGRP; dip-attr_debugcmd.show = debugcmd_show; dip-attr_debugcmd.store = debugcmd_store; + sysfs_attr_init(dip-attr_debuginfo.attr); dip-attr_debuginfo.attr.name = debuginfo; dip-attr_debuginfo.attr.mode = S_IRUGO; dip-attr_debuginfo.show = debuginfo_show; @@ -644,6 +646,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, return; } + sysfs_attr_init(sfp-attr_v4l_minor_number.attr); sfp-attr_v4l_minor_number.attr.name = v4l_minor_number; sfp-attr_v4l_minor_number.attr.mode = S_IRUGO; sfp-attr_v4l_minor_number.show = v4l_minor_number_show; @@ -658,6 +661,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-v4l_minor_number_created_ok = !0; } + sysfs_attr_init(sfp-attr_v4l_radio_minor_number.attr); sfp-attr_v4l_radio_minor_number.attr.name = v4l_radio_minor_number; sfp-attr_v4l_radio_minor_number.attr.mode = S_IRUGO; sfp-attr_v4l_radio_minor_number.show = v4l_radio_minor_number_show; @@ -672,6 +676,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-v4l_radio_minor_number_created_ok = !0; } + sysfs_attr_init(sfp-attr_unit_number.attr); sfp-attr_unit_number.attr.name = unit_number; sfp-attr_unit_number.attr.mode = S_IRUGO; sfp-attr_unit_number.show = unit_number_show; @@ -685,6 +690,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-unit_number_created_ok = !0; } + sysfs_attr_init(sfp-attr_bus_info.attr); sfp-attr_bus_info.attr.name = bus_info_str; sfp-attr_bus_info.attr.mode = S_IRUGO; sfp-attr_bus_info.show = bus_info_show; @@ -699,6 +705,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-bus_info_created_ok = !0; } + sysfs_attr_init(sfp-attr_hdw_name.attr); sfp-attr_hdw_name.attr.name = device_hardware_type; sfp-attr_hdw_name.attr.mode = S_IRUGO; sfp-attr_hdw_name.show = hdw_name_show; @@ -713,6 +720,7 @@ static void class_dev_create(struct pvr2_sysfs *sfp, sfp-hdw_name_created_ok = !0; } + sysfs_attr_init(sfp-attr_hdw_desc.attr); sfp-attr_hdw_desc.attr.name = device_hardware_description; sfp-attr_hdw_desc.attr.mode = S_IRUGO; sfp-attr_hdw_desc.show = hdw_desc_show; diff --git a/drivers/platform/x86/intel_menlow.c b/drivers/platform/x86/intel_menlow.c index f0a90a6..90ba5d7 100644 --- a/drivers/platform/x86/intel_menlow.c +++
Re: [PATCH] device_attributes: add sysfs_attr_init() for dynamic attributes
Hi Wolfram, On Mon, Mar 22, 2010 at 07:21:17AM +0100, Wolfram Sang wrote: Made necessary by 6992f5334995af474c2b58d010d08bc597f0f2fe. Found by this semantic patch: @ init @ type T; identifier A; @@ T { ... struct device_attribute A; ... }; @ main extends init @ expression E; statement S; identifier err; T *name; @@ ... when != sysfs_attr_init(name-A.attr); ( + sysfs_attr_init(name-A.attr); if (device_create_file(E, name-A)) S | + sysfs_attr_init(name-A.attr); err = device_create_file(E, name-A); ) While reviewing, I put the initialization to apropriate places. My standard question - are all of these need to be dynamically allocated? Thanks. -- Dmitry ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH] device_attributes: add sysfs_attr_init() for dynamic attributes
On Sun, Mar 21, 2010 at 11:40:28PM -0700, Dmitry Torokhov wrote: My standard question - are all of these need to be dynamically allocated? I have my doubts for a few of them. Still, this would be a more intrusive change than just fixing the BUG appearance, so I'd like to leave that task for those having the proper setup. Regarding thermal_sys.c, which has two bug reports already, it needs to be dynamic as the attribute name depends on the device. Regards, Wolfram -- Pengutronix e.K. | Wolfram Sang| Industrial Linux Solutions | http://www.pengutronix.de/ | signature.asc Description: Digital signature ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev