]> Pileus Git - ~andy/linux/blobdiff - drivers/gpu/drm/drm_scatter.c
Merge branch 'slub/lockless' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg...
[~andy/linux] / drivers / gpu / drm / drm_scatter.c
index d15e09b0ae0bf8c322712d5e3101f7dc8d53eb6a..7525e0311e5903ca1d80a94e6ed292de9c4817af 100644 (file)
@@ -83,30 +83,26 @@ int drm_sg_alloc(struct drm_device *dev, struct drm_scatter_gather * request)
        if (dev->sg)
                return -EINVAL;
 
-       entry = kmalloc(sizeof(*entry), GFP_KERNEL);
+       entry = kzalloc(sizeof(*entry), GFP_KERNEL);
        if (!entry)
                return -ENOMEM;
 
-       memset(entry, 0, sizeof(*entry));
        pages = (request->size + PAGE_SIZE - 1) / PAGE_SIZE;
        DRM_DEBUG("size=%ld pages=%ld\n", request->size, pages);
 
        entry->pages = pages;
-       entry->pagelist = kmalloc(pages * sizeof(*entry->pagelist), GFP_KERNEL);
+       entry->pagelist = kcalloc(pages, sizeof(*entry->pagelist), GFP_KERNEL);
        if (!entry->pagelist) {
                kfree(entry);
                return -ENOMEM;
        }
 
-       memset(entry->pagelist, 0, pages * sizeof(*entry->pagelist));
-
-       entry->busaddr = kmalloc(pages * sizeof(*entry->busaddr), GFP_KERNEL);
+       entry->busaddr = kcalloc(pages, sizeof(*entry->busaddr), GFP_KERNEL);
        if (!entry->busaddr) {
                kfree(entry->pagelist);
                kfree(entry);
                return -ENOMEM;
        }
-       memset((void *)entry->busaddr, 0, pages * sizeof(*entry->busaddr));
 
        entry->virtual = drm_vmalloc_dma(pages << PAGE_SHIFT);
        if (!entry->virtual) {