Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/etnaviv: Optimize error handling in etnaviv_gem_new_userptr()

Refactor this function implementation so that the
drm_gem_object_unreference_unlocked() function will only be called once
in case of a failure according to the Linux coding style recommendation
for centralized exiting of functions.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
[seanpaul tweaked subject]
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/4af34ce6-62c6-7966-1ae3-0877d5ac909d@users.sourceforge.net

authored by

Markus Elfring and committed by
Sean Paul
d9a7ed77 8c6e6188

+3 -6
+3 -6
drivers/gpu/drm/etnaviv/etnaviv_gem.c
··· 913 913 get_task_struct(current); 914 914 915 915 ret = etnaviv_gem_obj_add(dev, &etnaviv_obj->base); 916 - if (ret) { 917 - drm_gem_object_unreference_unlocked(&etnaviv_obj->base); 918 - return ret; 919 - } 916 + if (ret) 917 + goto unreference; 920 918 921 919 ret = drm_gem_handle_create(file, &etnaviv_obj->base, handle); 922 - 920 + unreference: 923 921 /* drop reference from allocate - handle holds it now */ 924 922 drm_gem_object_unreference_unlocked(&etnaviv_obj->base); 925 - 926 923 return ret; 927 924 }