init dynamic bin_attribute structures
Wolfram Sang [Mon, 15 Mar 2010 00:29:41 +0000 (01:29 +0100)]
Commit 6992f5334995af474c2b58d010d08bc597f0f2fe ("sysfs: Use one lockdep
class per sysfs attribute.") introduced this requirement.  First, at25
was fixed manually.  Then, other occurences were found with coccinelle
and the following semantic patch.  Results were reviewed and fixed up:

    @ init @
    identifier struct_name, bin;
    @@

     struct struct_name {
     ...
     struct bin_attribute bin;
     ...
     };

    @ main extends init @
    expression E;
    statement S;
    identifier name, err;
    @@

    (
     struct struct_name *name;
    |
    - struct struct_name *name = NULL;
    + struct struct_name *name;
    )
     ...
    (
     sysfs_bin_attr_init(&name->bin);
    |
    + sysfs_bin_attr_init(&name->bin);
     if (sysfs_create_bin_file(E, &name->bin))
     S
    |
    + sysfs_bin_attr_init(&name->bin);
     err = sysfs_create_bin_file(E, &name->bin);
    )

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

arch/mips/txx9/generic/setup.c
drivers/misc/eeprom/at25.c
drivers/rtc/rtc-ds1742.c

index 7174d83..95184a0 100644 (file)
@@ -956,6 +956,7 @@ void __init txx9_sramc_init(struct resource *r)
        if (!dev->base)
                goto exit;
        dev->dev.cls = &txx9_sramc_sysdev_class;
+       sysfs_bin_attr_init(&dev->bindata_attr);
        dev->bindata_attr.attr.name = "bindata";
        dev->bindata_attr.attr.mode = S_IRUSR | S_IWUSR;
        dev->bindata_attr.read = txx9_sram_read;
index d902d81..d194212 100644 (file)
@@ -347,6 +347,7 @@ static int at25_probe(struct spi_device *spi)
         * that's sensitive for read and/or write, like ethernet addresses,
         * security codes, board-specific manufacturing calibrations, etc.
         */
+       sysfs_bin_attr_init(&at25->bin);
        at25->bin.attr.name = "eeprom";
        at25->bin.attr.mode = S_IRUSR;
        at25->bin.read = at25_bin_read;
index a127336..cad9ceb 100644 (file)
@@ -184,6 +184,7 @@ static int __devinit ds1742_rtc_probe(struct platform_device *pdev)
        pdata->size_nvram = pdata->size - RTC_SIZE;
        pdata->ioaddr_rtc = ioaddr + pdata->size_nvram;
 
+       sysfs_bin_attr_init(&pdata->nvram_attr);
        pdata->nvram_attr.attr.name = "nvram";
        pdata->nvram_attr.attr.mode = S_IRUGO | S_IWUSR;
        pdata->nvram_attr.read = ds1742_nvram_read;