Merge 4.4.91 into android-4.4
[GitHub/exynos8895/android_kernel_samsung_universal8895.git] / drivers / mmc / core / sdio_bus.c
index e32ed3d28b067e79516e0e51dc64d2247fd5604f..60984899b1354eeb75c3e9617b9dfedcb091cd39 100644 (file)
@@ -277,7 +277,7 @@ static void sdio_release_func(struct device *dev)
                sdio_free_func_cis(func);
 
        kfree(func->info);
-
+       kfree(func->tmpbuf);
        kfree(func);
 }
 
@@ -292,6 +292,16 @@ struct sdio_func *sdio_alloc_func(struct mmc_card *card)
        if (!func)
                return ERR_PTR(-ENOMEM);
 
+       /*
+        * allocate buffer separately to make sure it's properly aligned for
+        * DMA usage (incl. 64 bit DMA)
+        */
+       func->tmpbuf = kmalloc(4, GFP_KERNEL);
+       if (!func->tmpbuf) {
+               kfree(func);
+               return ERR_PTR(-ENOMEM);
+       }
+
        func->card = card;
 
        device_initialize(&func->dev);