diff --git a/src/driver-hidpp20.c b/src/driver-hidpp20.c index 66fdce04..f267d5d1 100644 --- a/src/driver-hidpp20.c +++ b/src/driver-hidpp20.c @@ -808,11 +808,9 @@ hidpp20drv_probe(struct ratbag_device *device) drv_data->num_resolutions = 1; drv_data->num_buttons = 8; - if (dev->proto_major >= 2) { - rc = hidpp20drv_20_probe(device); - if (rc) - goto err; - } + rc = hidpp20drv_20_probe(device); + if (rc) + goto err; ratbag_device_init_profiles(device, drv_data->num_profiles, @@ -823,6 +821,8 @@ hidpp20drv_probe(struct ratbag_device *device) err: free(drv_data); ratbag_set_drv_data(device, NULL); + if (dev) + hidpp20_device_destroy(dev); return rc; } diff --git a/src/hidpp20.c b/src/hidpp20.c index 38b82e42..2b707a2b 100644 --- a/src/hidpp20.c +++ b/src/hidpp20.c @@ -1892,6 +1892,9 @@ hidpp20_device_new(const struct hidpp_device *base, unsigned int idx) goto err; } + if (dev->proto_major < 2) + goto err; + rc = hidpp20_feature_set_get(dev); if (rc < 0) goto err;