From: Christian Gromm Date: Mon, 13 Aug 2018 13:02:28 +0000 (+0200) Subject: staging: most: register channel device after init of struct members X-Git-Tag: v4.20-rc1~72^2~493 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=f0b4a22a48481824e124f633bbe5d3e884fc8e36;p=uclinux-h8%2Flinux.git staging: most: register channel device after init of struct members This patch moves the call to device_register to the end of the channel initialization section that the devcie belongs to. It is needed to avoid NULL pointer dereferences once the device is registered with sysfs. Signed-off-by: Christian Gromm Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/most/core.c b/drivers/staging/most/core.c index f4c464625a67..b59e4711b62f 100644 --- a/drivers/staging/most/core.c +++ b/drivers/staging/most/core.c @@ -1439,10 +1439,6 @@ int most_register_interface(struct most_interface *iface) c->dev.parent = &iface->dev; c->dev.groups = channel_attr_groups; c->dev.release = release_channel; - if (device_register(&c->dev)) { - pr_err("registering c->dev failed\n"); - goto free_instance_nodev; - } iface->p->channel[i] = c; c->is_starving = 0; c->iface = iface; @@ -1465,6 +1461,10 @@ int most_register_interface(struct most_interface *iface) mutex_init(&c->start_mutex); mutex_init(&c->nq_mutex); list_add_tail(&c->list, &iface->p->channel_list); + if (device_register(&c->dev)) { + pr_err("registering c->dev failed\n"); + goto free_instance_nodev; + } } pr_info("registered new device mdev%d (%s)\n", id, iface->description);