From 16884128127280a26d21b5f9fbfe87d2c17a7346 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Thu, 20 Aug 2009 10:29:09 +0200 Subject: [PATCH] --- yaml --- r: 163927 b: refs/heads/master c: 759e4f83f418f4001e724042b4c0e408d615d9ec h: refs/heads/master i: 163925: f4abf3175f6a97f7d35471fb39112fab65c0fda2 163923: 22969743d9f39543e737b09f3ae5133bc91869a4 163919: 19cfb3f65441f4e5328ef08c1fcd0ac01f47a083 v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/ttm/ttm_memory.c | 36 ++++++++++++++++++++------ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 7f9d50722ec8..bd68f42d25ab 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7f5f4db2d50ea1af8f160686d2e97bbfa5102b4f +refs/heads/master: 759e4f83f418f4001e724042b4c0e408d615d9ec diff --git a/trunk/drivers/gpu/drm/ttm/ttm_memory.c b/trunk/drivers/gpu/drm/ttm/ttm_memory.c index 62fb5cf0899e..072c281a6bb5 100644 --- a/trunk/drivers/gpu/drm/ttm/ttm_memory.c +++ b/trunk/drivers/gpu/drm/ttm/ttm_memory.c @@ -244,6 +244,7 @@ static int ttm_mem_init_kernel_zone(struct ttm_mem_global *glob, { struct ttm_mem_zone *zone = kzalloc(sizeof(*zone), GFP_KERNEL); uint64_t mem; + int ret; if (unlikely(!zone)) return -ENOMEM; @@ -259,9 +260,14 @@ static int ttm_mem_init_kernel_zone(struct ttm_mem_global *glob, zone->used_mem = 0; zone->glob = glob; glob->zone_kernel = zone; - glob->zones[glob->num_zones++] = zone; kobject_init(&zone->kobj, &ttm_mem_zone_kobj_type); - return kobject_add(&zone->kobj, &glob->kobj, zone->name); + ret = kobject_add(&zone->kobj, &glob->kobj, zone->name); + if (unlikely(ret != 0)) { + kobject_put(&zone->kobj); + return ret; + } + glob->zones[glob->num_zones++] = zone; + return 0; } #ifdef CONFIG_HIGHMEM @@ -270,6 +276,7 @@ static int ttm_mem_init_highmem_zone(struct ttm_mem_global *glob, { struct ttm_mem_zone *zone = kzalloc(sizeof(*zone), GFP_KERNEL); uint64_t mem; + int ret; if (unlikely(!zone)) return -ENOMEM; @@ -288,9 +295,14 @@ static int ttm_mem_init_highmem_zone(struct ttm_mem_global *glob, zone->used_mem = 0; zone->glob = glob; glob->zone_highmem = zone; - glob->zones[glob->num_zones++] = zone; kobject_init(&zone->kobj, &ttm_mem_zone_kobj_type); - return kobject_add(&zone->kobj, &glob->kobj, zone->name); + ret = kobject_add(&zone->kobj, &glob->kobj, zone->name); + if (unlikely(ret != 0)) { + kobject_put(&zone->kobj); + return ret; + } + glob->zones[glob->num_zones++] = zone; + return 0; } #else static int ttm_mem_init_dma32_zone(struct ttm_mem_global *glob, @@ -298,6 +310,7 @@ static int ttm_mem_init_dma32_zone(struct ttm_mem_global *glob, { struct ttm_mem_zone *zone = kzalloc(sizeof(*zone), GFP_KERNEL); uint64_t mem; + int ret; if (unlikely(!zone)) return -ENOMEM; @@ -327,9 +340,14 @@ static int ttm_mem_init_dma32_zone(struct ttm_mem_global *glob, zone->used_mem = 0; zone->glob = glob; glob->zone_dma32 = zone; - glob->zones[glob->num_zones++] = zone; kobject_init(&zone->kobj, &ttm_mem_zone_kobj_type); - return kobject_add(&zone->kobj, &glob->kobj, zone->name); + ret = kobject_add(&zone->kobj, &glob->kobj, zone->name); + if (unlikely(ret != 0)) { + kobject_put(&zone->kobj); + return ret; + } + glob->zones[glob->num_zones++] = zone; + return 0; } #endif @@ -348,8 +366,10 @@ int ttm_mem_global_init(struct ttm_mem_global *glob) ret = kobject_add(&glob->kobj, ttm_get_kobj(), "memory_accounting"); - if (unlikely(ret != 0)) - goto out_no_zone; + if (unlikely(ret != 0)) { + kobject_put(&glob->kobj); + return ret; + } si_meminfo(&si);