]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
drm/nouveau/core: use vzalloc for allocating ramht
authorIlia Mirkin <imirkin@alum.mit.edu>
Sun, 6 Mar 2016 21:06:06 +0000 (16:06 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 May 2016 21:48:43 +0000 (14:48 -0700)
commit 78a121d82da8aff3aca2a6a1c40f5061081760f0 upstream.

Most calls to nvkm_ramht_new use 0x8000 as the size. This results in a
fairly sizeable chunk of memory to be allocated, which may not be
available with kzalloc. Since this is done fairly rarely (once per
channel), use vzalloc instead.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Cc: Sven Joachim <svenjoac@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/nouveau/nvkm/core/ramht.c

index 3216e157a8a0d17c62e6c7f75e5df8b9b0d99b9d..89da47234016b8bb4c6a0906e2f32cfee9a1b04f 100644 (file)
@@ -131,7 +131,7 @@ nvkm_ramht_del(struct nvkm_ramht **pramht)
        struct nvkm_ramht *ramht = *pramht;
        if (ramht) {
                nvkm_gpuobj_del(&ramht->gpuobj);
-               kfree(*pramht);
+               vfree(*pramht);
                *pramht = NULL;
        }
 }
@@ -143,8 +143,8 @@ nvkm_ramht_new(struct nvkm_device *device, u32 size, u32 align,
        struct nvkm_ramht *ramht;
        int ret, i;
 
-       if (!(ramht = *pramht = kzalloc(sizeof(*ramht) + (size >> 3) *
-                                       sizeof(*ramht->data), GFP_KERNEL)))
+       if (!(ramht = *pramht = vzalloc(sizeof(*ramht) +
+                                       (size >> 3) * sizeof(*ramht->data))))
                return -ENOMEM;
 
        ramht->device = device;