]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/mmc/core/sdio_bus.c
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
[mv-sheeva.git] / drivers / mmc / core / sdio_bus.c
index fcb13fb0daad3ff97700ac09cb80d9ef6fcb1e95..d37464e296a507deb743182c3764714f83cdda9c 100644 (file)
@@ -20,9 +20,6 @@
 #include "sdio_cis.h"
 #include "sdio_bus.h"
 
-#define dev_to_sdio_func(d)    container_of(d, struct sdio_func, dev)
-#define to_sdio_driver(d)      container_of(d, struct sdio_driver, drv)
-
 /* show configuration fields */
 #define sdio_config_attr(field, format_string)                         \
 static ssize_t                                                         \
@@ -96,30 +93,23 @@ static int sdio_bus_match(struct device *dev, struct device_driver *drv)
 }
 
 static int
-sdio_bus_uevent(struct device *dev, char **envp, int num_envp, char *buf,
-               int buf_size)
+sdio_bus_uevent(struct device *dev, struct kobj_uevent_env *env)
 {
        struct sdio_func *func = dev_to_sdio_func(dev);
-       int i = 0, length = 0;
 
-       if (add_uevent_var(envp, num_envp, &i,
-                       buf, buf_size, &length,
+       if (add_uevent_var(env,
                        "SDIO_CLASS=%02X", func->class))
                return -ENOMEM;
 
-       if (add_uevent_var(envp, num_envp, &i,
-                       buf, buf_size, &length,
+       if (add_uevent_var(env, 
                        "SDIO_ID=%04X:%04X", func->vendor, func->device))
                return -ENOMEM;
 
-       if (add_uevent_var(envp, num_envp, &i,
-                       buf, buf_size, &length,
+       if (add_uevent_var(env,
                        "MODALIAS=sdio:c%02Xv%04Xd%04X",
                        func->class, func->vendor, func->device))
                return -ENOMEM;
 
-       envp[i] = NULL;
-
        return 0;
 }
 
@@ -211,6 +201,9 @@ static void sdio_release_func(struct device *dev)
 
        sdio_free_func_cis(func);
 
+       if (func->info)
+               kfree(func->info);
+
        kfree(func);
 }
 
@@ -221,12 +214,10 @@ struct sdio_func *sdio_alloc_func(struct mmc_card *card)
 {
        struct sdio_func *func;
 
-       func = kmalloc(sizeof(struct sdio_func), GFP_KERNEL);
+       func = kzalloc(sizeof(struct sdio_func), GFP_KERNEL);
        if (!func)
                return ERR_PTR(-ENOMEM);
 
-       memset(func, 0, sizeof(struct sdio_func));
-
        func->card = card;
 
        device_initialize(&func->dev);
@@ -245,8 +236,7 @@ int sdio_add_func(struct sdio_func *func)
 {
        int ret;
 
-       snprintf(func->dev.bus_id, sizeof(func->dev.bus_id),
-                "%s:%d", mmc_card_id(func->card), func->num);
+       dev_set_name(&func->dev, "%s:%d", mmc_card_id(func->card), func->num);
 
        ret = device_add(&func->dev);
        if (ret == 0)