mirror of https://gitee.com/openkylin/linux.git
drm/nouveau/iccsense: fix memory leak
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
539aae6e3a
commit
6aa85f1129
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue