Permalink
Browse files

iccsense: fix memory leak

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
  • Loading branch information...
skeggsb committed May 26, 2016
1 parent c455ef0 commit 7505fdfc2688e86f8e15069b611858f0dbe73a80
Showing with 9 additions and 7 deletions.
  1. +9 −7 drm/nouveau/nvkm/subdev/iccsense/base.c
@@ -276,6 +276,8 @@ nvkm_iccsense_oneinit(struct nvkm_subdev *subdev)
struct pwr_rail_t *r = &stbl.rail[i];
struct nvkm_iccsense_rail *rail;
struct nvkm_iccsense_sensor *sensor;
int (*read)(struct nvkm_iccsense *,
struct nvkm_iccsense_rail *);

if (!r->mode || r->resistor_mohm == 0)
continue;
@@ -284,31 +286,31 @@ nvkm_iccsense_oneinit(struct nvkm_subdev *subdev)
if (!sensor)
continue;

rail = kmalloc(sizeof(*rail), GFP_KERNEL);
if (!rail)
return -ENOMEM;

switch (sensor->type) {
case NVBIOS_EXTDEV_INA209:
if (r->rail != 0)
continue;
rail->read = nvkm_iccsense_ina209_read;
read = nvkm_iccsense_ina209_read;
break;
case NVBIOS_EXTDEV_INA219:
if (r->rail != 0)
continue;
rail->read = nvkm_iccsense_ina219_read;
read = nvkm_iccsense_ina219_read;
break;
case NVBIOS_EXTDEV_INA3221:
if (r->rail >= 3)
continue;
rail->read = nvkm_iccsense_ina3221_read;
read = nvkm_iccsense_ina3221_read;
break;
default:
continue;
}

rail = kmalloc(sizeof(*rail), GFP_KERNEL);
if (!rail)
return -ENOMEM;
sensor->rail_mask |= 1 << r->rail;
rail->read = read;
rail->sensor = sensor;
rail->idx = r->rail;
rail->mohm = r->resistor_mohm;

0 comments on commit 7505fdf

Please sign in to comment.