* [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs
@ 2007-07-18 5:53 Jeff Garzik
2007-07-18 5:55 ` [PATCH 2/3] drivers/video/aty/radeon_base: fix radeonfb_pci_register() err handling Jeff Garzik
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Jeff Garzik @ 2007-07-18 5:53 UTC (permalink / raw)
To: LKML; +Cc: Greg KH, Andrew Morton
The following change was checked into 'warnings' branch of
git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6.git
commit 5330916f5a11d8b7def46a6b3e14a831684032f5
Author: Jeff Garzik <jeff@garzik.org>
Date: Wed Jul 18 01:41:29 2007 -0400
drivers/base/core: improve device_add() error handling, fix bugs
* silence several warnings by handling sysfs_create_link() failure
* re-order some operations in error handling, to precisely reverse
the order of operations, i.e. unwind properly.
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/base/core.c | 46 ++++++++++++++++++++++++++++++----------------
1 file changed, 30 insertions(+), 16 deletions(-)
5330916f5a11d8b7def46a6b3e14a831684032f5
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 0455aa7..f26c005 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -698,16 +698,26 @@ int device_add(struct device *dev)
}
if (dev->class) {
- sysfs_create_link(&dev->kobj, &dev->class->subsys.kobj,
- "subsystem");
+ error = sysfs_create_link(&dev->kobj, &dev->class->subsys.kobj,
+ "subsystem");
+ if (error)
+ goto ClassSubsysError;
+
/* If this is not a "fake" compatible device, then create the
* symlink from the class to the device. */
- if (dev->kobj.parent != &dev->class->subsys.kobj)
- sysfs_create_link(&dev->class->subsys.kobj,
- &dev->kobj, dev->bus_id);
+ if (dev->kobj.parent != &dev->class->subsys.kobj) {
+ error = sysfs_create_link(&dev->class->subsys.kobj,
+ &dev->kobj, dev->bus_id);
+ if (error)
+ goto ClassDevLinkError;
+ }
+
if (parent) {
- sysfs_create_link(&dev->kobj, &dev->parent->kobj,
- "device");
+ error = sysfs_create_link(&dev->kobj,&dev->parent->kobj,
+ "device");
+ if (error)
+ goto ParentDevLinkError;
+
#ifdef CONFIG_SYSFS_DEPRECATED
class_name = make_class_name(dev->class->name,
&dev->kobj);
@@ -755,16 +765,7 @@ int device_add(struct device *dev)
BUS_NOTIFY_DEL_DEVICE, dev);
device_remove_attrs(dev);
AttrsError:
- if (MAJOR(dev->devt))
- device_remove_file(dev, &devt_attr);
-
if (dev->class) {
- sysfs_remove_link(&dev->kobj, "subsystem");
- /* If this is not a "fake" compatible device, remove the
- * symlink from the class to the device. */
- if (dev->kobj.parent != &dev->class->subsys.kobj)
- sysfs_remove_link(&dev->class->subsys.kobj,
- dev->bus_id);
if (parent) {
#ifdef CONFIG_SYSFS_DEPRECATED
char *class_name = make_class_name(dev->class->name,
@@ -776,7 +777,20 @@ int device_add(struct device *dev)
#endif
sysfs_remove_link(&dev->kobj, "device");
}
+
+ ParentDevLinkError:
+ /* If this is not a "fake" compatible device, remove the
+ * symlink from the class to the device. */
+ if (dev->kobj.parent != &dev->class->subsys.kobj)
+ sysfs_remove_link(&dev->class->subsys.kobj,
+ dev->bus_id);
+
+ ClassDevLinkError:
+ sysfs_remove_link(&dev->kobj, "subsystem");
}
+ ClassSubsysError:
+ if (MAJOR(dev->devt))
+ device_remove_file(dev, &devt_attr);
ueventattrError:
device_remove_file(dev, &uevent_attr);
attrError:
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 2/3] drivers/video/aty/radeon_base: fix radeonfb_pci_register() err handling 2007-07-18 5:53 [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs Jeff Garzik @ 2007-07-18 5:55 ` Jeff Garzik 2007-07-18 5:56 ` [PATCH 3/3] x86-64: make flush_tlb_kernel_range() a static inline function Jeff Garzik 2007-07-18 8:15 ` [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs Cornelia Huck 2 siblings, 0 replies; 8+ messages in thread From: Jeff Garzik @ 2007-07-18 5:55 UTC (permalink / raw) To: LKML; +Cc: Andrew Morton, adaplas, linux-fbdev-devel The following change was checked into 'warnings' branch of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6.git commit 61470a24062de01853fb922ec4a81dcd1c0ba1d0 Author: Jeff Garzik <jeff@garzik.org> Date: Wed Jul 18 01:43:05 2007 -0400 drivers/video/aty/radeon_base: fix radeonfb_pci_register() err handling * silence warnings by handling failure of sysfs_create_bin_file() * fix leak-on-error if register_framebuffer() fails, and sysfs is active Signed-off-by: Jeff Garzik <jeff@garzik.org> drivers/video/aty/radeon_base.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) 61470a24062de01853fb922ec4a81dcd1c0ba1d0 diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c index 47ca62f..5a5458b 100644 --- a/drivers/video/aty/radeon_base.c +++ b/drivers/video/aty/radeon_base.c @@ -2326,10 +2326,16 @@ static int __devinit radeonfb_pci_register (struct pci_dev *pdev, radeon_check_modes(rinfo, mode_option); /* Register some sysfs stuff (should be done better) */ - if (rinfo->mon1_EDID) - sysfs_create_bin_file(&rinfo->pdev->dev.kobj, &edid1_attr); - if (rinfo->mon2_EDID) - sysfs_create_bin_file(&rinfo->pdev->dev.kobj, &edid2_attr); + if (rinfo->mon1_EDID) { + ret = sysfs_create_bin_file(&rinfo->pdev->dev.kobj,&edid1_attr); + if (ret) + goto err_unmap_fb; + } + if (rinfo->mon2_EDID) { + ret = sysfs_create_bin_file(&rinfo->pdev->dev.kobj,&edid2_attr); + if (ret) + goto err_free_mon1; + } /* save current mode regs before we switch into the new one * so we can restore this upon __exit @@ -2353,7 +2359,7 @@ static int __devinit radeonfb_pci_register (struct pci_dev *pdev, if (ret < 0) { printk (KERN_ERR "radeonfb (%s): could not register framebuffer\n", pci_name(rinfo->pdev)); - goto err_unmap_fb; + goto err_free_mon2; } #ifdef CONFIG_MTRR @@ -2372,6 +2378,13 @@ static int __devinit radeonfb_pci_register (struct pci_dev *pdev, RTRACE("radeonfb_pci_register END\n"); return 0; + +err_free_mon2: + if (rinfo->mon2_EDID) + sysfs_remove_bin_file(&rinfo->pdev->dev.kobj, &edid2_attr); +err_free_mon1: + if (rinfo->mon1_EDID) + sysfs_remove_bin_file(&rinfo->pdev->dev.kobj, &edid1_attr); err_unmap_fb: iounmap(rinfo->fb_base); err_unmap_rom: ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/3] x86-64: make flush_tlb_kernel_range() a static inline function 2007-07-18 5:53 [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs Jeff Garzik 2007-07-18 5:55 ` [PATCH 2/3] drivers/video/aty/radeon_base: fix radeonfb_pci_register() err handling Jeff Garzik @ 2007-07-18 5:56 ` Jeff Garzik 2007-07-18 8:15 ` [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs Cornelia Huck 2 siblings, 0 replies; 8+ messages in thread From: Jeff Garzik @ 2007-07-18 5:56 UTC (permalink / raw) To: LKML; +Cc: Andrew Morton, ak The following change was checked into 'warnings' branch of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6.git commit b1c9131343597967d8fcc042f59e4ed36ea2855f Author: Jeff Garzik <jeff@garzik.org> Date: Wed Jul 18 01:47:39 2007 -0400 [X86-64] make flush_tlb_kernel_range() a static inline function On x86-64, without this change, the following warning is emitted mm/vmalloc.c: In function ‘unmap_kernel_range’: mm/vmalloc.c:75: warning: unused variable ‘start’ because, x86-64, flush_tlb_kernel_range(start,end) evaluates down to flush_tlb_all(void) in a macro. Avoid this warning by implementing x86-64's flush_tlb_kernel_range() as a type-safe static inline, rather than a macro. Signed-off-by: Jeff Garzik <jeff@garzik.org> include/asm-x86_64/tlbflush.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) b1c9131343597967d8fcc042f59e4ed36ea2855f diff --git a/include/asm-x86_64/tlbflush.h b/include/asm-x86_64/tlbflush.h index 8516225..a82464c 100644 --- a/include/asm-x86_64/tlbflush.h +++ b/include/asm-x86_64/tlbflush.h @@ -92,7 +92,11 @@ static inline void flush_tlb_range(struct vm_area_struct * vma, unsigned long st #endif -#define flush_tlb_kernel_range(start, end) flush_tlb_all() +static inline void flush_tlb_kernel_range(unsigned long start, + unsigned long end) +{ + flush_tlb_all(); +} static inline void flush_tlb_pgtables(struct mm_struct *mm, unsigned long start, unsigned long end) ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs 2007-07-18 5:53 [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs Jeff Garzik 2007-07-18 5:55 ` [PATCH 2/3] drivers/video/aty/radeon_base: fix radeonfb_pci_register() err handling Jeff Garzik 2007-07-18 5:56 ` [PATCH 3/3] x86-64: make flush_tlb_kernel_range() a static inline function Jeff Garzik @ 2007-07-18 8:15 ` Cornelia Huck 2007-07-18 8:16 ` Jeff Garzik 2 siblings, 1 reply; 8+ messages in thread From: Cornelia Huck @ 2007-07-18 8:15 UTC (permalink / raw) To: Jeff Garzik; +Cc: LKML, Greg KH, Andrew Morton On Wed, 18 Jul 2007 01:53:48 -0400, Jeff Garzik <jeff@garzik.org> wrote: > > The following change was checked into 'warnings' branch of > git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6.git > > commit 5330916f5a11d8b7def46a6b3e14a831684032f5 > Author: Jeff Garzik <jeff@garzik.org> > Date: Wed Jul 18 01:41:29 2007 -0400 > > drivers/base/core: improve device_add() error handling, fix bugs > > * silence several warnings by handling sysfs_create_link() failure > > * re-order some operations in error handling, to precisely reverse > the order of operations, i.e. unwind properly. > > Signed-off-by: Jeff Garzik <jeff@garzik.org> > > drivers/base/core.c | 46 ++++++++++++++++++++++++++++++---------------- > 1 file changed, 30 insertions(+), 16 deletions(-) Hm, what about driver-core-check-return-code-of-sysfs_create_link.patch (merged with ...-fix.patch) which has been in -mm for a while? ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs 2007-07-18 8:15 ` [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs Cornelia Huck @ 2007-07-18 8:16 ` Jeff Garzik 2007-07-18 8:36 ` Greg KH 0 siblings, 1 reply; 8+ messages in thread From: Jeff Garzik @ 2007-07-18 8:16 UTC (permalink / raw) To: Cornelia Huck; +Cc: LKML, Greg KH, Andrew Morton Cornelia Huck wrote: > On Wed, 18 Jul 2007 01:53:48 -0400, > Jeff Garzik <jeff@garzik.org> wrote: > >> The following change was checked into 'warnings' branch of >> git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6.git >> >> commit 5330916f5a11d8b7def46a6b3e14a831684032f5 >> Author: Jeff Garzik <jeff@garzik.org> >> Date: Wed Jul 18 01:41:29 2007 -0400 >> >> drivers/base/core: improve device_add() error handling, fix bugs >> >> * silence several warnings by handling sysfs_create_link() failure >> >> * re-order some operations in error handling, to precisely reverse >> the order of operations, i.e. unwind properly. >> >> Signed-off-by: Jeff Garzik <jeff@garzik.org> >> >> drivers/base/core.c | 46 ++++++++++++++++++++++++++++++---------------- >> 1 file changed, 30 insertions(+), 16 deletions(-) > > Hm, what about driver-core-check-return-code-of-sysfs_create_link.patch > (merged with ...-fix.patch) which has been in -mm for a while? No idea, I didn't check there. If someone else has a better patch... great! Let's merge it :) Jeff ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs 2007-07-18 8:16 ` Jeff Garzik @ 2007-07-18 8:36 ` Greg KH 2007-07-18 8:57 ` Cornelia Huck 0 siblings, 1 reply; 8+ messages in thread From: Greg KH @ 2007-07-18 8:36 UTC (permalink / raw) To: Jeff Garzik; +Cc: Cornelia Huck, LKML, Andrew Morton On Wed, Jul 18, 2007 at 04:16:10AM -0400, Jeff Garzik wrote: > Cornelia Huck wrote: > > On Wed, 18 Jul 2007 01:53:48 -0400, > > Jeff Garzik <jeff@garzik.org> wrote: > >> The following change was checked into 'warnings' branch of > >> git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6.git > >> > >> commit 5330916f5a11d8b7def46a6b3e14a831684032f5 > >> Author: Jeff Garzik <jeff@garzik.org> > >> Date: Wed Jul 18 01:41:29 2007 -0400 > >> > >> drivers/base/core: improve device_add() error handling, fix bugs > >> * silence several warnings by handling sysfs_create_link() failure > >> * re-order some operations in error handling, to precisely reverse > >> the order of operations, i.e. unwind properly. > >> Signed-off-by: Jeff Garzik <jeff@garzik.org> > >> > >> drivers/base/core.c | 46 ++++++++++++++++++++++++++++++---------------- > >> 1 file changed, 30 insertions(+), 16 deletions(-) > > Hm, what about driver-core-check-return-code-of-sysfs_create_link.patch > > (merged with ...-fix.patch) which has been in -mm for a while? > > No idea, I didn't check there. If someone else has a better patch... > great! Let's merge it :) It's in my queue. Or it should be, hm, Cornelia, can you resend it, I seem to have dropped it :( thanks, greg k-h ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs 2007-07-18 8:36 ` Greg KH @ 2007-07-18 8:57 ` Cornelia Huck 2007-07-18 9:00 ` Jeff Garzik 0 siblings, 1 reply; 8+ messages in thread From: Cornelia Huck @ 2007-07-18 8:57 UTC (permalink / raw) To: Greg KH; +Cc: Jeff Garzik, LKML, Andrew Morton On Wed, 18 Jul 2007 01:36:00 -0700, Greg KH <greg@kroah.com> wrote: > Or it should be, hm, Cornelia, can you resend it, I seem to have dropped > it :( Andrew just did :) (For reference, here's the patch:) > From: akpm@linux-foundation.org > To: greg@kroah.com > Cc: akpm@linux-foundation.org, cornelia.huck@de.ibm.com > Subject: [patch 1/1] Driver core: check return code of sysfs_create_link() > Date: Wed, 18 Jul 2007 01:43:47 -0700 > > From: Cornelia Huck <cornelia.huck@de.ibm.com> > > Check for return value of sysfs_create_link() in device_add() and > device_rename(). Add helper functions device_add_class_symlinks() and > device_remove_class_symlinks() to make the code easier to read. > > [akpm@linux-foundation.org: fix unused var warnings] > Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> > Cc: Greg KH <greg@kroah.com> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > --- > > drivers/base/core.c | 145 ++++++++++++++++++++++++++++++------------ > 1 file changed, 105 insertions(+), 40 deletions(-) > > diff -puN drivers/base/core.c~driver-core-check-return-code-of-sysfs_create_link drivers/base/core.c > --- a/drivers/base/core.c~driver-core-check-return-code-of-sysfs_create_link > +++ a/drivers/base/core.c > @@ -643,6 +643,82 @@ static int setup_parent(struct device *d > return 0; > } > > +static int device_add_class_symlinks(struct device *dev) > +{ > + int error; > + > + if (!dev->class) > + return 0; > + error = sysfs_create_link(&dev->kobj, &dev->class->subsys.kobj, > + "subsystem"); > + if (error) > + goto out; > + /* > + * If this is not a "fake" compatible device, then create the > + * symlink from the class to the device. > + */ > + if (dev->kobj.parent != &dev->class->subsys.kobj) { > + error = sysfs_create_link(&dev->class->subsys.kobj, &dev->kobj, > + dev->bus_id); > + if (error) > + goto out_subsys; > + } > + /* only bus-device parents get a "device"-link */ > + if (dev->parent && dev->parent->bus) { > + error = sysfs_create_link(&dev->kobj, &dev->parent->kobj, > + "device"); > + if (error) > + goto out_busid; > +#ifdef CONFIG_SYSFS_DEPRECATED > + { > + char * class_name = make_class_name(dev->class->name, > + &dev->kobj); > + if (class_name) > + error = sysfs_create_link(&dev->parent->kobj, > + &dev->kobj, class_name); > + kfree(class_name); > + if (error) > + goto out_device; > + } > +#endif > + } > + return 0; > + > +#ifdef CONFIG_SYSFS_DEPRECATED > +out_device: > + if (dev->parent) > + sysfs_remove_link(&dev->kobj, "device"); > +#endif > +out_busid: > + if (dev->kobj.parent != &dev->class->subsys.kobj) > + sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id); > +out_subsys: > + sysfs_remove_link(&dev->kobj, "subsystem"); > +out: > + return error; > +} > + > +static void device_remove_class_symlinks(struct device *dev) > +{ > + if (!dev->class) > + return; > + if (dev->parent) { > +#ifdef CONFIG_SYSFS_DEPRECATED > + char *class_name; > + > + class_name = make_class_name(dev->class->name, &dev->kobj); > + if (class_name) { > + sysfs_remove_link(&dev->parent->kobj, class_name); > + kfree(class_name); > + } > +#endif > + sysfs_remove_link(&dev->kobj, "device"); > + } > + if (dev->kobj.parent != &dev->class->subsys.kobj) > + sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id); > + sysfs_remove_link(&dev->kobj, "subsystem"); > +} > + > /** > * device_add - add device to device hierarchy. > * @dev: device. > @@ -657,7 +733,6 @@ static int setup_parent(struct device *d > int device_add(struct device *dev) > { > struct device *parent = NULL; > - char *class_name = NULL; > struct class_interface *class_intf; > int error = -EINVAL; > > @@ -697,27 +772,9 @@ int device_add(struct device *dev) > goto ueventattrError; > } > > - if (dev->class) { > - sysfs_create_link(&dev->kobj, &dev->class->subsys.kobj, > - "subsystem"); > - /* If this is not a "fake" compatible device, then create the > - * symlink from the class to the device. */ > - if (dev->kobj.parent != &dev->class->subsys.kobj) > - sysfs_create_link(&dev->class->subsys.kobj, > - &dev->kobj, dev->bus_id); > - if (parent) { > - sysfs_create_link(&dev->kobj, &dev->parent->kobj, > - "device"); > -#ifdef CONFIG_SYSFS_DEPRECATED > - class_name = make_class_name(dev->class->name, > - &dev->kobj); > - if (class_name) > - sysfs_create_link(&dev->parent->kobj, > - &dev->kobj, class_name); > -#endif > - } > - } > - > + error = device_add_class_symlinks(dev); > + if (error) > + goto SymlinkError; > error = device_add_attrs(dev); > if (error) > goto AttrsError; > @@ -744,7 +801,6 @@ int device_add(struct device *dev) > up(&dev->class->sem); > } > Done: > - kfree(class_name); > put_device(dev); > return error; > BusError: > @@ -755,6 +811,8 @@ int device_add(struct device *dev) > BUS_NOTIFY_DEL_DEVICE, dev); > device_remove_attrs(dev); > AttrsError: > + device_remove_class_symlinks(dev); > + SymlinkError: > if (MAJOR(dev->devt)) > device_remove_file(dev, &devt_attr); > > @@ -1140,7 +1198,7 @@ int device_rename(struct device *dev, ch > { > char *old_class_name = NULL; > char *new_class_name = NULL; > - char *old_symlink_name = NULL; > + char *old_device_name = NULL; > int error; > > dev = get_device(dev); > @@ -1154,42 +1212,49 @@ int device_rename(struct device *dev, ch > old_class_name = make_class_name(dev->class->name, &dev->kobj); > #endif > > - if (dev->class) { > - old_symlink_name = kmalloc(BUS_ID_SIZE, GFP_KERNEL); > - if (!old_symlink_name) { > - error = -ENOMEM; > - goto out_free_old_class; > - } > - strlcpy(old_symlink_name, dev->bus_id, BUS_ID_SIZE); > + old_device_name = kmalloc(BUS_ID_SIZE, GFP_KERNEL); > + if (!old_device_name) { > + error = -ENOMEM; > + goto out; > } > - > + strlcpy(old_device_name, dev->bus_id, BUS_ID_SIZE); > strlcpy(dev->bus_id, new_name, BUS_ID_SIZE); > > error = kobject_rename(&dev->kobj, new_name); > + if (error) { > + strlcpy(dev->bus_id, old_device_name, BUS_ID_SIZE); > + goto out; > + } > > #ifdef CONFIG_SYSFS_DEPRECATED > if (old_class_name) { > new_class_name = make_class_name(dev->class->name, &dev->kobj); > if (new_class_name) { > - sysfs_create_link(&dev->parent->kobj, &dev->kobj, > - new_class_name); > + error = sysfs_create_link(&dev->parent->kobj, > + &dev->kobj, new_class_name); > + if (error) > + goto out; > sysfs_remove_link(&dev->parent->kobj, old_class_name); > } > } > #endif > > if (dev->class) { > - sysfs_remove_link(&dev->class->subsys.kobj, > - old_symlink_name); > - sysfs_create_link(&dev->class->subsys.kobj, &dev->kobj, > - dev->bus_id); > + sysfs_remove_link(&dev->class->subsys.kobj, old_device_name); > + error = sysfs_create_link(&dev->class->subsys.kobj, &dev->kobj, > + dev->bus_id); > + if (error) { > + /* Uh... how to unravel this if restoring can fail? */ > + dev_err(dev, "%s: sysfs_create_symlink failed (%d)\n", > + __FUNCTION__, error); > + } > } > +out: > put_device(dev); > > kfree(new_class_name); > - kfree(old_symlink_name); > - out_free_old_class: > kfree(old_class_name); > + kfree(old_device_name); > > return error; > } > _ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs 2007-07-18 8:57 ` Cornelia Huck @ 2007-07-18 9:00 ` Jeff Garzik 0 siblings, 0 replies; 8+ messages in thread From: Jeff Garzik @ 2007-07-18 9:00 UTC (permalink / raw) To: Cornelia Huck; +Cc: Greg KH, LKML, Andrew Morton Cornelia Huck wrote: > On Wed, 18 Jul 2007 01:36:00 -0700, > Greg KH <greg@kroah.com> wrote: > >> Or it should be, hm, Cornelia, can you resend it, I seem to have dropped >> it :( > > Andrew just did :) > > (For reference, here's the patch:) > >> From: akpm@linux-foundation.org >> To: greg@kroah.com >> Cc: akpm@linux-foundation.org, cornelia.huck@de.ibm.com >> Subject: [patch 1/1] Driver core: check return code of sysfs_create_link() >> Date: Wed, 18 Jul 2007 01:43:47 -0700 >> >> From: Cornelia Huck <cornelia.huck@de.ibm.com> >> >> Check for return value of sysfs_create_link() in device_add() and >> device_rename(). Add helper functions device_add_class_symlinks() and >> device_remove_class_symlinks() to make the code easier to read. >> >> [akpm@linux-foundation.org: fix unused var warnings] >> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> >> Cc: Greg KH <greg@kroah.com> >> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> >> --- >> >> drivers/base/core.c | 145 ++++++++++++++++++++++++++++++------------ >> 1 file changed, 105 insertions(+), 40 deletions(-) ACK ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2007-07-18 9:00 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-07-18 5:53 [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs Jeff Garzik 2007-07-18 5:55 ` [PATCH 2/3] drivers/video/aty/radeon_base: fix radeonfb_pci_register() err handling Jeff Garzik 2007-07-18 5:56 ` [PATCH 3/3] x86-64: make flush_tlb_kernel_range() a static inline function Jeff Garzik 2007-07-18 8:15 ` [PATCH 1/3] drivers/base/core: improve device_add() error handling, fix bugs Cornelia Huck 2007-07-18 8:16 ` Jeff Garzik 2007-07-18 8:36 ` Greg KH 2007-07-18 8:57 ` Cornelia Huck 2007-07-18 9:00 ` Jeff Garzik
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox