From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Date: Fri, 19 Aug 2016 07:50:21 +0000 Subject: Re: [PATCH 2/2] GPU-DRM-Savage: Less function calls in savage_bci_cmdbuf() after error detection Message-Id: <20160819075021.GU6232@phenom.ffwll.local> List-Id: References: <566ABCD9.1060404@users.sourceforge.net> <77052ac1-1933-49af-3ad8-6e0eecc1aafe@users.sourceforge.net> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: SF Markus Elfring Cc: kernel-janitors@vger.kernel.org, LKML , "dri-devel@lists.freedesktop.org" , Julia Lawall On Thu, Aug 18, 2016 at 09:48:04PM +0200, SF Markus Elfring wrote: > From: Markus Elfring > Date: Thu, 18 Aug 2016 21:28:58 +0200 > > The kfree() function was called in a few cases by the > savage_bci_cmdbuf() function during error handling > even if a passed variable contained a null pointer. > > Adjust jump targets according to the Linux coding style convention. > > Signed-off-by: Markus Elfring Not sure this is worth it, I'll pass. Patch 1 merged. Btw I consider cocci patches a good way to get started somewhere, but then it's much more useful to do a bit more involved things. We keep a list of small&big janitor tasks: https://www.x.org/wiki/DRMJanitors/ Cleaning up all the cocci errors in drm isn't good since then the next person won't have something easy to get started, i.e. consider you're budget used up ;-) -Daniel > --- > drivers/gpu/drm/savage/savage_state.c | 30 +++++++++++++++--------------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/drivers/gpu/drm/savage/savage_state.c b/drivers/gpu/drm/savage/savage_state.c > index 3dc0d8f..5b484aa 100644 > --- a/drivers/gpu/drm/savage/savage_state.c > +++ b/drivers/gpu/drm/savage/savage_state.c > @@ -1004,7 +1004,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > kvb_addr = memdup_user(cmdbuf->vb_addr, cmdbuf->vb_size); > if (IS_ERR(kvb_addr)) { > ret = PTR_ERR(kvb_addr); > - goto done; > + goto free_cmd; > } > cmdbuf->vb_addr = kvb_addr; > } > @@ -1013,13 +1013,13 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > GFP_KERNEL); > if (kbox_addr = NULL) { > ret = -ENOMEM; > - goto done; > + goto free_vb; > } > > if (copy_from_user(kbox_addr, cmdbuf->box_addr, > cmdbuf->nbox * sizeof(struct drm_clip_rect))) { > ret = -EFAULT; > - goto done; > + goto free_vb; > } > cmdbuf->box_addr = kbox_addr; > } > @@ -1052,7 +1052,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > "beyond end of command buffer\n"); > DMA_FLUSH(); > ret = -EINVAL; > - goto done; > + goto free_box; > } > /* fall through */ > case SAVAGE_CMD_DMA_PRIM: > @@ -1071,7 +1071,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > cmdbuf->vb_stride, > cmdbuf->nbox, cmdbuf->box_addr); > if (ret != 0) > - goto done; > + goto free_box; > first_draw_cmd = NULL; > } > } > @@ -1086,7 +1086,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > "beyond end of command buffer\n"); > DMA_FLUSH(); > ret = -EINVAL; > - goto done; > + goto free_box; > } > ret = savage_dispatch_state(dev_priv, &cmd_header, > (const uint32_t *)cmdbuf->cmd_addr); > @@ -1099,7 +1099,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > "beyond end of command buffer\n"); > DMA_FLUSH(); > ret = -EINVAL; > - goto done; > + goto free_box; > } > ret = savage_dispatch_clear(dev_priv, &cmd_header, > cmdbuf->cmd_addr, > @@ -1117,12 +1117,12 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > cmd_header.cmd.cmd); > DMA_FLUSH(); > ret = -EINVAL; > - goto done; > + goto free_box; > } > > if (ret != 0) { > DMA_FLUSH(); > - goto done; > + goto free_box; > } > } > > @@ -1133,7 +1133,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > cmdbuf->nbox, cmdbuf->box_addr); > if (ret != 0) { > DMA_FLUSH(); > - goto done; > + goto free_box; > } > } > > @@ -1147,11 +1147,11 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > savage_freelist_put(dev, dmabuf); > } > > -done: > - /* If we didn't need to allocate them, these'll be NULL */ > - kfree(kcmd_addr); > - kfree(kvb_addr); > +free_box: > kfree(kbox_addr); > - > +free_vb: > + kfree(kvb_addr); > +free_cmd: > + kfree(kcmd_addr); > return ret; > } > -- > 2.9.3 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/2] GPU-DRM-Savage: Less function calls in savage_bci_cmdbuf() after error detection Date: Fri, 19 Aug 2016 09:50:21 +0200 Message-ID: <20160819075021.GU6232@phenom.ffwll.local> References: <566ABCD9.1060404@users.sourceforge.net> <77052ac1-1933-49af-3ad8-6e0eecc1aafe@users.sourceforge.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4ACBA6EB93 for ; Fri, 19 Aug 2016 07:50:26 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id i5so2374845wmg.2 for ; Fri, 19 Aug 2016 00:50:26 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: SF Markus Elfring Cc: kernel-janitors@vger.kernel.org, LKML , "dri-devel@lists.freedesktop.org" , Julia Lawall List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBBdWcgMTgsIDIwMTYgYXQgMDk6NDg6MDRQTSArMDIwMCwgU0YgTWFya3VzIEVsZnJp bmcgd3JvdGU6Cj4gRnJvbTogTWFya3VzIEVsZnJpbmcgPGVsZnJpbmdAdXNlcnMuc291cmNlZm9y Z2UubmV0Pgo+IERhdGU6IFRodSwgMTggQXVnIDIwMTYgMjE6Mjg6NTggKzAyMDAKPiAKPiBUaGUg a2ZyZWUoKSBmdW5jdGlvbiB3YXMgY2FsbGVkIGluIGEgZmV3IGNhc2VzIGJ5IHRoZQo+IHNhdmFn ZV9iY2lfY21kYnVmKCkgZnVuY3Rpb24gZHVyaW5nIGVycm9yIGhhbmRsaW5nCj4gZXZlbiBpZiBh IHBhc3NlZCB2YXJpYWJsZSBjb250YWluZWQgYSBudWxsIHBvaW50ZXIuCj4gCj4gQWRqdXN0IGp1 bXAgdGFyZ2V0cyBhY2NvcmRpbmcgdG8gdGhlIExpbnV4IGNvZGluZyBzdHlsZSBjb252ZW50aW9u Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBFbGZyaW5nIDxlbGZyaW5nQHVzZXJzLnNvdXJj ZWZvcmdlLm5ldD4KCk5vdCBzdXJlIHRoaXMgaXMgd29ydGggaXQsIEknbGwgcGFzcy4gUGF0Y2gg MSBtZXJnZWQuIEJ0dyBJIGNvbnNpZGVyCmNvY2NpIHBhdGNoZXMgYSBnb29kIHdheSB0byBnZXQg c3RhcnRlZCBzb21ld2hlcmUsIGJ1dCB0aGVuIGl0J3MgbXVjaCBtb3JlCnVzZWZ1bCB0byBkbyBh IGJpdCBtb3JlIGludm9sdmVkIHRoaW5ncy4gV2Uga2VlcCBhIGxpc3Qgb2Ygc21hbGwmYmlnCmph bml0b3IgdGFza3M6CgpodHRwczovL3d3dy54Lm9yZy93aWtpL0RSTUphbml0b3JzLwoKQ2xlYW5p bmcgdXAgYWxsIHRoZSBjb2NjaSBlcnJvcnMgaW4gZHJtIGlzbid0IGdvb2Qgc2luY2UgdGhlbiB0 aGUgbmV4dApwZXJzb24gd29uJ3QgaGF2ZSBzb21ldGhpbmcgZWFzeSB0byBnZXQgc3RhcnRlZCwg aS5lLiBjb25zaWRlciB5b3UncmUKYnVkZ2V0IHVzZWQgdXAgOy0pCi1EYW5pZWwKCj4gLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9zYXZhZ2Uvc2F2YWdlX3N0YXRlLmMgfCAzMCArKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc2F2YWdlL3Nh dmFnZV9zdGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL3NhdmFnZS9zYXZhZ2Vfc3RhdGUuYwo+IGlu ZGV4IDNkYzBkOGYuLjViNDg0YWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3NhdmFn ZS9zYXZhZ2Vfc3RhdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zYXZhZ2Uvc2F2YWdlX3N0 YXRlLmMKPiBAQCAtMTAwNCw3ICsxMDA0LDcgQEAgaW50IHNhdmFnZV9iY2lfY21kYnVmKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV8KPiAg CQlrdmJfYWRkciA9IG1lbWR1cF91c2VyKGNtZGJ1Zi0+dmJfYWRkciwgY21kYnVmLT52Yl9zaXpl KTsKPiAgCQlpZiAoSVNfRVJSKGt2Yl9hZGRyKSkgewo+ICAJCQlyZXQgPSBQVFJfRVJSKGt2Yl9h ZGRyKTsKPiAtCQkJZ290byBkb25lOwo+ICsJCQlnb3RvIGZyZWVfY21kOwo+ICAJCX0KPiAgCQlj bWRidWYtPnZiX2FkZHIgPSBrdmJfYWRkcjsKPiAgCX0KPiBAQCAtMTAxMywxMyArMTAxMywxMyBA QCBpbnQgc2F2YWdlX2JjaV9jbWRidWYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwgc3RydWN0IGRybV9maWxlICpmaWxlXwo+ICAJCQkJCSAgR0ZQX0tFUk5FTCk7Cj4gIAkJaWYg KGtib3hfYWRkciA9PSBOVUxMKSB7Cj4gIAkJCXJldCA9IC1FTk9NRU07Cj4gLQkJCWdvdG8gZG9u ZTsKPiArCQkJZ290byBmcmVlX3ZiOwo+ICAJCX0KPiAgCj4gIAkJaWYgKGNvcHlfZnJvbV91c2Vy KGtib3hfYWRkciwgY21kYnVmLT5ib3hfYWRkciwKPiAgCQkJCSAgICAgICBjbWRidWYtPm5ib3gg KiBzaXplb2Yoc3RydWN0IGRybV9jbGlwX3JlY3QpKSkgewo+ICAJCQlyZXQgPSAtRUZBVUxUOwo+ IC0JCQlnb3RvIGRvbmU7Cj4gKwkJCWdvdG8gZnJlZV92YjsKPiAgCQl9Cj4gIAljbWRidWYtPmJv eF9hZGRyID0ga2JveF9hZGRyOwo+ICAJfQo+IEBAIC0xMDUyLDcgKzEwNTIsNyBAQCBpbnQgc2F2 YWdlX2JjaV9jbWRidWYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0 IGRybV9maWxlICpmaWxlXwo+ICAJCQkJCSAgImJleW9uZCBlbmQgb2YgY29tbWFuZCBidWZmZXJc biIpOwo+ICAJCQkJRE1BX0ZMVVNIKCk7Cj4gIAkJCQlyZXQgPSAtRUlOVkFMOwo+IC0JCQkJZ290 byBkb25lOwo+ICsJCQkJZ290byBmcmVlX2JveDsKPiAgCQkJfQo+ICAJCQkvKiBmYWxsIHRocm91 Z2ggKi8KPiAgCQljYXNlIFNBVkFHRV9DTURfRE1BX1BSSU06Cj4gQEAgLTEwNzEsNyArMTA3MSw3 IEBAIGludCBzYXZhZ2VfYmNpX2NtZGJ1ZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfCj4gIAkJCQkgICAgICBjbWRidWYtPnZiX3N0cmlk ZSwKPiAgCQkJCSAgICAgIGNtZGJ1Zi0+bmJveCwgY21kYnVmLT5ib3hfYWRkcik7Cj4gIAkJCQlp ZiAocmV0ICE9IDApCj4gLQkJCQkJZ290byBkb25lOwo+ICsJCQkJCWdvdG8gZnJlZV9ib3g7Cj4g IAkJCQlmaXJzdF9kcmF3X2NtZCA9IE5VTEw7Cj4gIAkJCX0KPiAgCQl9Cj4gQEAgLTEwODYsNyAr MTA4Niw3IEBAIGludCBzYXZhZ2VfYmNpX2NtZGJ1ZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfCj4gIAkJCQkJICAiYmV5b25kIGVuZCBv ZiBjb21tYW5kIGJ1ZmZlclxuIik7Cj4gIAkJCQlETUFfRkxVU0goKTsKPiAgCQkJCXJldCA9IC1F SU5WQUw7Cj4gLQkJCQlnb3RvIGRvbmU7Cj4gKwkJCQlnb3RvIGZyZWVfYm94Owo+ICAJCQl9Cj4g IAkJCXJldCA9IHNhdmFnZV9kaXNwYXRjaF9zdGF0ZShkZXZfcHJpdiwgJmNtZF9oZWFkZXIsCj4g IAkJCQkoY29uc3QgdWludDMyX3QgKiljbWRidWYtPmNtZF9hZGRyKTsKPiBAQCAtMTA5OSw3ICsx MDk5LDcgQEAgaW50IHNhdmFnZV9iY2lfY21kYnVmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV8KPiAgCQkJCQkgICJiZXlvbmQgZW5kIG9m IGNvbW1hbmQgYnVmZmVyXG4iKTsKPiAgCQkJCURNQV9GTFVTSCgpOwo+ICAJCQkJcmV0ID0gLUVJ TlZBTDsKPiAtCQkJCWdvdG8gZG9uZTsKPiArCQkJCWdvdG8gZnJlZV9ib3g7Cj4gIAkJCX0KPiAg CQkJcmV0ID0gc2F2YWdlX2Rpc3BhdGNoX2NsZWFyKGRldl9wcml2LCAmY21kX2hlYWRlciwKPiAg CQkJCQkJICAgIGNtZGJ1Zi0+Y21kX2FkZHIsCj4gQEAgLTExMTcsMTIgKzExMTcsMTIgQEAgaW50 IHNhdmFnZV9iY2lfY21kYnVmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV8KPiAgCQkJCSAgY21kX2hlYWRlci5jbWQuY21kKTsKPiAgCQkJ RE1BX0ZMVVNIKCk7Cj4gIAkJCXJldCA9IC1FSU5WQUw7Cj4gLQkJCWdvdG8gZG9uZTsKPiArCQkJ Z290byBmcmVlX2JveDsKPiAgCQl9Cj4gIAo+ICAJCWlmIChyZXQgIT0gMCkgewo+ICAJCQlETUFf RkxVU0goKTsKPiAtCQkJZ290byBkb25lOwo+ICsJCQlnb3RvIGZyZWVfYm94Owo+ICAJCX0KPiAg CX0KPiAgCj4gQEAgLTExMzMsNyArMTEzMyw3IEBAIGludCBzYXZhZ2VfYmNpX2NtZGJ1ZihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfCj4g IAkJCWNtZGJ1Zi0+bmJveCwgY21kYnVmLT5ib3hfYWRkcik7Cj4gIAkJaWYgKHJldCAhPSAwKSB7 Cj4gIAkJCURNQV9GTFVTSCgpOwo+IC0JCQlnb3RvIGRvbmU7Cj4gKwkJCWdvdG8gZnJlZV9ib3g7 Cj4gIAkJfQo+ICAJfQo+ICAKPiBAQCAtMTE0NywxMSArMTE0NywxMSBAQCBpbnQgc2F2YWdlX2Jj aV9jbWRidWYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9m aWxlICpmaWxlXwo+ICAJCXNhdmFnZV9mcmVlbGlzdF9wdXQoZGV2LCBkbWFidWYpOwo+ICAJfQo+ ICAKPiAtZG9uZToKPiAtCS8qIElmIHdlIGRpZG4ndCBuZWVkIHRvIGFsbG9jYXRlIHRoZW0sIHRo ZXNlJ2xsIGJlIE5VTEwgKi8KPiAtCWtmcmVlKGtjbWRfYWRkcik7Cj4gLQlrZnJlZShrdmJfYWRk cik7Cj4gK2ZyZWVfYm94Ogo+ICAJa2ZyZWUoa2JveF9hZGRyKTsKPiAtCj4gK2ZyZWVfdmI6Cj4g KwlrZnJlZShrdmJfYWRkcik7Cj4gK2ZyZWVfY21kOgo+ICsJa2ZyZWUoa2NtZF9hZGRyKTsKPiAg CXJldHVybiByZXQ7Cj4gIH0KPiAtLSAKPiAyLjkuMwo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755046AbcHSHuh (ORCPT ); Fri, 19 Aug 2016 03:50:37 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:35940 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753897AbcHSHuf (ORCPT ); Fri, 19 Aug 2016 03:50:35 -0400 Date: Fri, 19 Aug 2016 09:50:21 +0200 From: Daniel Vetter To: SF Markus Elfring Cc: "dri-devel@lists.freedesktop.org" , Daniel Vetter , David Airlie , LKML , kernel-janitors@vger.kernel.org, Julia Lawall Subject: Re: [PATCH 2/2] GPU-DRM-Savage: Less function calls in savage_bci_cmdbuf() after error detection Message-ID: <20160819075021.GU6232@phenom.ffwll.local> Mail-Followup-To: SF Markus Elfring , "dri-devel@lists.freedesktop.org" , David Airlie , LKML , kernel-janitors@vger.kernel.org, Julia Lawall References: <566ABCD9.1060404@users.sourceforge.net> <77052ac1-1933-49af-3ad8-6e0eecc1aafe@users.sourceforge.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Operating-System: Linux phenom 4.6.0-1-amd64 User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Aug 18, 2016 at 09:48:04PM +0200, SF Markus Elfring wrote: > From: Markus Elfring > Date: Thu, 18 Aug 2016 21:28:58 +0200 > > The kfree() function was called in a few cases by the > savage_bci_cmdbuf() function during error handling > even if a passed variable contained a null pointer. > > Adjust jump targets according to the Linux coding style convention. > > Signed-off-by: Markus Elfring Not sure this is worth it, I'll pass. Patch 1 merged. Btw I consider cocci patches a good way to get started somewhere, but then it's much more useful to do a bit more involved things. We keep a list of small&big janitor tasks: https://www.x.org/wiki/DRMJanitors/ Cleaning up all the cocci errors in drm isn't good since then the next person won't have something easy to get started, i.e. consider you're budget used up ;-) -Daniel > --- > drivers/gpu/drm/savage/savage_state.c | 30 +++++++++++++++--------------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/drivers/gpu/drm/savage/savage_state.c b/drivers/gpu/drm/savage/savage_state.c > index 3dc0d8f..5b484aa 100644 > --- a/drivers/gpu/drm/savage/savage_state.c > +++ b/drivers/gpu/drm/savage/savage_state.c > @@ -1004,7 +1004,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > kvb_addr = memdup_user(cmdbuf->vb_addr, cmdbuf->vb_size); > if (IS_ERR(kvb_addr)) { > ret = PTR_ERR(kvb_addr); > - goto done; > + goto free_cmd; > } > cmdbuf->vb_addr = kvb_addr; > } > @@ -1013,13 +1013,13 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > GFP_KERNEL); > if (kbox_addr == NULL) { > ret = -ENOMEM; > - goto done; > + goto free_vb; > } > > if (copy_from_user(kbox_addr, cmdbuf->box_addr, > cmdbuf->nbox * sizeof(struct drm_clip_rect))) { > ret = -EFAULT; > - goto done; > + goto free_vb; > } > cmdbuf->box_addr = kbox_addr; > } > @@ -1052,7 +1052,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > "beyond end of command buffer\n"); > DMA_FLUSH(); > ret = -EINVAL; > - goto done; > + goto free_box; > } > /* fall through */ > case SAVAGE_CMD_DMA_PRIM: > @@ -1071,7 +1071,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > cmdbuf->vb_stride, > cmdbuf->nbox, cmdbuf->box_addr); > if (ret != 0) > - goto done; > + goto free_box; > first_draw_cmd = NULL; > } > } > @@ -1086,7 +1086,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > "beyond end of command buffer\n"); > DMA_FLUSH(); > ret = -EINVAL; > - goto done; > + goto free_box; > } > ret = savage_dispatch_state(dev_priv, &cmd_header, > (const uint32_t *)cmdbuf->cmd_addr); > @@ -1099,7 +1099,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > "beyond end of command buffer\n"); > DMA_FLUSH(); > ret = -EINVAL; > - goto done; > + goto free_box; > } > ret = savage_dispatch_clear(dev_priv, &cmd_header, > cmdbuf->cmd_addr, > @@ -1117,12 +1117,12 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > cmd_header.cmd.cmd); > DMA_FLUSH(); > ret = -EINVAL; > - goto done; > + goto free_box; > } > > if (ret != 0) { > DMA_FLUSH(); > - goto done; > + goto free_box; > } > } > > @@ -1133,7 +1133,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > cmdbuf->nbox, cmdbuf->box_addr); > if (ret != 0) { > DMA_FLUSH(); > - goto done; > + goto free_box; > } > } > > @@ -1147,11 +1147,11 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ > savage_freelist_put(dev, dmabuf); > } > > -done: > - /* If we didn't need to allocate them, these'll be NULL */ > - kfree(kcmd_addr); > - kfree(kvb_addr); > +free_box: > kfree(kbox_addr); > - > +free_vb: > + kfree(kvb_addr); > +free_cmd: > + kfree(kcmd_addr); > return ret; > } > -- > 2.9.3 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch