On Thu 26 July 2012 13:59:04 Ezequiel Garcia wrote: > It is possible that video_put() releases video_device struct, > provoking a panic when debug printk wants to get video_device node name. > > Signed-off-by: Ezequiel Garcia <elezegarcia@xxxxxxxxx> Acked-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> Good catch! Regards, Hans > --- > drivers/media/video/v4l2-dev.c | 12 ++++++------ > 1 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/media/video/v4l2-dev.c b/drivers/media/video/v4l2-dev.c > index af70f93..3210fd5 100644 > --- a/drivers/media/video/v4l2-dev.c > +++ b/drivers/media/video/v4l2-dev.c > @@ -478,12 +478,12 @@ static int v4l2_open(struct inode *inode, struct file *filp) > } > > err: > - /* decrease the refcount in case of an error */ > - if (ret) > - video_put(vdev); > if (vdev->debug) > printk(KERN_DEBUG "%s: open (%d)\n", > video_device_node_name(vdev), ret); > + /* decrease the refcount in case of an error */ > + if (ret) > + video_put(vdev); > return ret; > } > > @@ -500,12 +500,12 @@ static int v4l2_release(struct inode *inode, struct file *filp) > if (test_bit(V4L2_FL_LOCK_ALL_FOPS, &vdev->flags)) > mutex_unlock(vdev->lock); > } > - /* decrease the refcount unconditionally since the release() > - return value is ignored. */ > - video_put(vdev); > if (vdev->debug) > printk(KERN_DEBUG "%s: release\n", > video_device_node_name(vdev)); > + /* decrease the refcount unconditionally since the release() > + return value is ignored. */ > + video_put(vdev); > return ret; > } > > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html