summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/most/core.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/most/core.c b/drivers/most/core.c
index 6277e6702ca8..40d63e38fef5 100644
--- a/drivers/most/core.c
+++ b/drivers/most/core.c
@@ -1282,12 +1282,17 @@ int most_register_interface(struct most_interface *iface)
int id;
struct most_channel *c;
- if (!iface || !iface->enqueue || !iface->configure ||
- !iface->poison_channel || (iface->num_channels > MAX_CHANNELS))
+ if (!iface)
return -EINVAL;
device_initialize(iface->dev);
+ if (!iface->enqueue || !iface->configure || !iface->poison_channel ||
+ (iface->num_channels > MAX_CHANNELS)) {
+ put_device(iface->dev);
+ return -EINVAL;
+ }
+
id = ida_alloc(&mdev_id, GFP_KERNEL);
if (id < 0) {
dev_err(iface->dev, "Failed to allocate device ID\n");