On 07/05/2018 17:11, Tony Krowiak wrote:
Introduces a new AP device driver. This device driver is built on the VFIO mediated device framework. The framework provides sysfs interfaces that facilitate passthrough access by guests to devices installed on the linux host.
...snip...
+static int vfio_ap_matrix_dev_create(void) +{ + int ret; + + vfio_ap_root_device = root_device_register(VFIO_AP_ROOT_NAME); + + if (IS_ERR(vfio_ap_root_device)) { + ret = PTR_ERR(vfio_ap_root_device); + goto done; + } + + ap_matrix = kzalloc(sizeof(*ap_matrix), GFP_KERNEL); + if (!ap_matrix) { + ret = -ENOMEM; + goto matrix_alloc_err; + } + + ap_matrix->device.type = &vfio_ap_dev_type; + dev_set_name(&ap_matrix->device, "%s", VFIO_AP_DEV_NAME); + ap_matrix->device.parent = vfio_ap_root_device; + ap_matrix->device.release = vfio_ap_matrix_dev_release; + ap_matrix->device.driver = &vfio_ap_drv.driver; + + ret = device_register(&ap_matrix->device); + if (ret) + goto matrix_reg_err; + + goto done; + +matrix_reg_err: + put_device(&ap_matrix->device);
Did not see this before but here you certainly want to do a kfree and not a put_device.
+ +matrix_alloc_err: + root_device_unregister(vfio_ap_root_device); + +done: + return ret; +} + +static void vfio_ap_matrix_dev_destroy(struct ap_matrix *ap_matrix) +{ + device_unregister(&ap_matrix->device); + root_device_unregister(vfio_ap_root_device);
Also here you need a kfree(ap_matrix) too . Pierre -- Pierre Morel Linux/KVM/QEMU in Böblingen - Germany -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html