X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=net%2Fatm%2Fatm_sysfs.c;h=f094a0879c16ddedcb386c6ca749a23f6c32fe9c;hb=23248005fbe5fa32a3f6d00cdec1ecfb115d28eb;hp=5df4b9a068bb2e103315b1e9858c764aea5b06d8;hpb=026477c1141b67e98e3bd8bdedb7d4b88a3ecd09;p=linux-2.6-omap-h63xx.git diff --git a/net/atm/atm_sysfs.c b/net/atm/atm_sysfs.c index 5df4b9a068b..f094a0879c1 100644 --- a/net/atm/atm_sysfs.c +++ b/net/atm/atm_sysfs.c @@ -1,6 +1,5 @@ /* ATM driver model support. */ -#include #include #include #include @@ -31,15 +30,15 @@ static ssize_t show_address(struct class_device *cdev, char *buf) static ssize_t show_atmaddress(struct class_device *cdev, char *buf) { - unsigned long flags; + unsigned long flags; char *pos = buf; struct atm_dev *adev = to_atm_dev(cdev); - struct atm_dev_addr *aaddr; + struct atm_dev_addr *aaddr; int bin[] = { 1, 2, 10, 6, 1 }, *fmt = bin; int i, j; - spin_lock_irqsave(&adev->lock, flags); - list_for_each_entry(aaddr, &adev->local, entry) { + spin_lock_irqsave(&adev->lock, flags); + list_for_each_entry(aaddr, &adev->local, entry) { for(i = 0, j = 0; i < ATM_ESA_LEN; ++i, ++j) { if (j == *fmt) { pos += sprintf(pos, "."); @@ -50,7 +49,7 @@ static ssize_t show_atmaddress(struct class_device *cdev, char *buf) } pos += sprintf(pos, "\n"); } - spin_unlock_irqrestore(&adev->lock, flags); + spin_unlock_irqrestore(&adev->lock, flags); return pos - buf; } @@ -62,7 +61,7 @@ static ssize_t show_carrier(struct class_device *cdev, char *buf) pos += sprintf(pos, "%d\n", adev->signal == ATM_PHY_SIG_LOST ? 0 : 1); - + return pos - buf; } @@ -87,7 +86,7 @@ static ssize_t show_link_rate(struct class_device *cdev, char *buf) link_rate = adev->link_rate * 8 * 53; } pos += sprintf(pos, "%d\n", link_rate); - + return pos - buf; } @@ -142,7 +141,7 @@ static struct class atm_class = { int atm_register_sysfs(struct atm_dev *adev) { struct class_device *cdev = &adev->class_dev; - int i, err; + int i, j, err; cdev->class = &atm_class; class_set_devdata(cdev, adev); @@ -152,10 +151,19 @@ int atm_register_sysfs(struct atm_dev *adev) if (err < 0) return err; - for (i = 0; atm_attrs[i]; i++) - class_device_create_file(cdev, atm_attrs[i]); + for (i = 0; atm_attrs[i]; i++) { + err = class_device_create_file(cdev, atm_attrs[i]); + if (err) + goto err_out; + } return 0; + +err_out: + for (j = 0; j < i; j++) + class_device_remove_file(cdev, atm_attrs[j]); + class_device_del(cdev); + return err; } void atm_unregister_sysfs(struct atm_dev *adev)