From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932966AbcFLO4p (ORCPT ); Sun, 12 Jun 2016 10:56:45 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:32953 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932156AbcFLO4n (ORCPT ); Sun, 12 Jun 2016 10:56:43 -0400 From: Sudip Mukherjee To: Ben Skeggs , David Airlie Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, Sudip Mukherjee Subject: [PATCH] drm/nouveau/iccsense: fix memory leak Date: Sun, 12 Jun 2016 15:56:34 +0100 Message-Id: <1465743394-6027-1-git-send-email-sudipm.mukherjee@gmail.com> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the for loop we are allocating the memory for rail everytime but in some cases we use "continue" and in those cases the memory already allocated for rail is leaked and we again allocate new memory for it. Lets free the memory before continuing with the loop. Signed-off-by: Sudip Mukherjee --- drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c index 323c79a..756ff07 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c @@ -290,21 +290,28 @@ nvkm_iccsense_oneinit(struct nvkm_subdev *subdev) switch (sensor->type) { case NVBIOS_EXTDEV_INA209: - if (r->rail != 0) + if (r->rail != 0) { + kfree(rail); continue; + } rail->read = nvkm_iccsense_ina209_read; break; case NVBIOS_EXTDEV_INA219: - if (r->rail != 0) + if (r->rail != 0) { + kfree(rail); continue; + } rail->read = nvkm_iccsense_ina219_read; break; case NVBIOS_EXTDEV_INA3221: - if (r->rail >= 3) + if (r->rail >= 3) { + kfree(rail); continue; + } rail->read = nvkm_iccsense_ina3221_read; break; default: + kfree(rail); continue; } -- 1.9.1