Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e43fc946 authored by Dave Airlie's avatar Dave Airlie
Browse files

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -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
+9 −7
Original line number Original line Diff line number Diff line
@@ -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)
		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;