Commit e43fc946 authored by Dave Airlie's avatar Dave Airlie

Merge branch 'linux-4.7' of git://github.com/skeggsb/linux into drm-fixes

* 'linux-4.7' of git://github.com/skeggsb/linux:
  drm/nouveau/iccsense: fix memory leak
  drm/nouveau/Revert "drm/nouveau/device/pci: set as non-CPU-coherent on ARM64"
parents fd2d2bac 6aa85f11
...@@ -1614,7 +1614,7 @@ nvkm_device_pci_func = { ...@@ -1614,7 +1614,7 @@ nvkm_device_pci_func = {
.fini = nvkm_device_pci_fini, .fini = nvkm_device_pci_fini,
.resource_addr = nvkm_device_pci_resource_addr, .resource_addr = nvkm_device_pci_resource_addr,
.resource_size = nvkm_device_pci_resource_size, .resource_size = nvkm_device_pci_resource_size,
.cpu_coherent = !IS_ENABLED(CONFIG_ARM) && !IS_ENABLED(CONFIG_ARM64), .cpu_coherent = !IS_ENABLED(CONFIG_ARM),
}; };
int int
......
...@@ -276,6 +276,8 @@ nvkm_iccsense_oneinit(struct nvkm_subdev *subdev) ...@@ -276,6 +276,8 @@ nvkm_iccsense_oneinit(struct nvkm_subdev *subdev)
struct pwr_rail_t *r = &stbl.rail[i]; struct pwr_rail_t *r = &stbl.rail[i];
struct nvkm_iccsense_rail *rail; struct nvkm_iccsense_rail *rail;
struct nvkm_iccsense_sensor *sensor; struct nvkm_iccsense_sensor *sensor;
int (*read)(struct nvkm_iccsense *,
struct nvkm_iccsense_rail *);
if (!r->mode || r->resistor_mohm == 0) if (!r->mode || r->resistor_mohm == 0)
continue; continue;
...@@ -284,31 +286,31 @@ nvkm_iccsense_oneinit(struct nvkm_subdev *subdev) ...@@ -284,31 +286,31 @@ nvkm_iccsense_oneinit(struct nvkm_subdev *subdev)
if (!sensor) if (!sensor)
continue; continue;
rail = kmalloc(sizeof(*rail), GFP_KERNEL);
if (!rail)
return -ENOMEM;
switch (sensor->type) { switch (sensor->type) {
case NVBIOS_EXTDEV_INA209: case NVBIOS_EXTDEV_INA209:
if (r->rail != 0) if (r->rail != 0)
continue; continue;
rail->read = nvkm_iccsense_ina209_read; read = nvkm_iccsense_ina209_read;
break; break;
case NVBIOS_EXTDEV_INA219: case NVBIOS_EXTDEV_INA219:
if (r->rail != 0) if (r->rail != 0)
continue; continue;
rail->read = nvkm_iccsense_ina219_read; read = nvkm_iccsense_ina219_read;
break; break;
case NVBIOS_EXTDEV_INA3221: case NVBIOS_EXTDEV_INA3221:
if (r->rail >= 3) if (r->rail >= 3)
continue; continue;
rail->read = nvkm_iccsense_ina3221_read; read = nvkm_iccsense_ina3221_read;
break; break;
default: default:
continue; continue;
} }
rail = kmalloc(sizeof(*rail), GFP_KERNEL);
if (!rail)
return -ENOMEM;
sensor->rail_mask |= 1 << r->rail; sensor->rail_mask |= 1 << r->rail;
rail->read = read;
rail->sensor = sensor; rail->sensor = sensor;
rail->idx = r->rail; rail->idx = r->rail;
rail->mohm = r->resistor_mohm; rail->mohm = r->resistor_mohm;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment