Message ID | 1437480406-19285-1-git-send-email-sudipm.mukherjee@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Jul 21, 2015 at 05:36:45PM +0530, Sudip Mukherjee wrote: > While creating the debugfs file we are setting the inode->i_private to > dev. That same dev is passed to these functions as private of struct > seq_file via single_open(). Moreover single_open is setting > file->private_data->private to dev. > So at this point it can never be NULL. > This check was added by commit eb3394faeb97 ("drm/i915: Add debugfs test > control files for Displayport compliance testing") > Still missing Cc: Chris Wilson ... Cc: Todd Previte ... here to make sure reviewers/original authors are in the loop. Anyway this is a simple enough patch, so I just pulled them both in. Thanks, Daniel > Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org> > --- > > v3: removed the check in i915_displayport_test_active_write also > v2: removed null check > v1 was drm/i915: fix possible null pointer dereference > > drivers/gpu/drm/i915/i915_debugfs.c | 21 +-------------------- > 1 file changed, 1 insertion(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c > index bc817da..ffce62e 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -4028,24 +4028,14 @@ static ssize_t i915_displayport_test_active_write(struct file *file, > { > char *input_buffer; > int status = 0; > - struct seq_file *m; > struct drm_device *dev; > struct drm_connector *connector; > struct list_head *connector_list; > struct intel_dp *intel_dp; > int val = 0; > > - m = file->private_data; > - if (!m) { > - status = -ENODEV; > - return status; > - } > - dev = m->private; > + dev = ((struct seq_file *)file->private_data)->private; > > - if (!dev) { > - status = -ENODEV; > - return status; > - } > connector_list = &dev->mode_config.connector_list; > > if (len == 0) > @@ -4103,9 +4093,6 @@ static int i915_displayport_test_active_show(struct seq_file *m, void *data) > struct list_head *connector_list = &dev->mode_config.connector_list; > struct intel_dp *intel_dp; > > - if (!dev) > - return -ENODEV; > - > list_for_each_entry(connector, connector_list, head) { > > if (connector->connector_type != > @@ -4150,9 +4137,6 @@ static int i915_displayport_test_data_show(struct seq_file *m, void *data) > struct list_head *connector_list = &dev->mode_config.connector_list; > struct intel_dp *intel_dp; > > - if (!dev) > - return -ENODEV; > - > list_for_each_entry(connector, connector_list, head) { > > if (connector->connector_type != > @@ -4192,9 +4176,6 @@ static int i915_displayport_test_type_show(struct seq_file *m, void *data) > struct list_head *connector_list = &dev->mode_config.connector_list; > struct intel_dp *intel_dp; > > - if (!dev) > - return -ENODEV; > - > list_for_each_entry(connector, connector_list, head) { > > if (connector->connector_type != > -- > 1.8.1.2 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel
On Tue, Jul 21, 2015 at 03:51:40PM +0200, Daniel Vetter wrote: > On Tue, Jul 21, 2015 at 05:36:45PM +0530, Sudip Mukherjee wrote: > > While creating the debugfs file we are setting the inode->i_private to > > dev. That same dev is passed to these functions as private of struct > > seq_file via single_open(). Moreover single_open is setting > > file->private_data->private to dev. > > So at this point it can never be NULL. > > This check was added by commit eb3394faeb97 ("drm/i915: Add debugfs test > > control files for Displayport compliance testing") > > > > Still missing > > Cc: Chris Wilson ... > Cc: Todd Previte ... > > here to make sure reviewers/original authors are in the loop. Anyway this > is a simple enough patch, so I just pulled them both in. Sorry. did you mean to put Cc: here before the Signed-off-by: ? I have put them in Cc list of the patches. For my next patch you will not get these issues. regards sudip
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index bc817da..ffce62e 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -4028,24 +4028,14 @@ static ssize_t i915_displayport_test_active_write(struct file *file, { char *input_buffer; int status = 0; - struct seq_file *m; struct drm_device *dev; struct drm_connector *connector; struct list_head *connector_list; struct intel_dp *intel_dp; int val = 0; - m = file->private_data; - if (!m) { - status = -ENODEV; - return status; - } - dev = m->private; + dev = ((struct seq_file *)file->private_data)->private; - if (!dev) { - status = -ENODEV; - return status; - } connector_list = &dev->mode_config.connector_list; if (len == 0) @@ -4103,9 +4093,6 @@ static int i915_displayport_test_active_show(struct seq_file *m, void *data) struct list_head *connector_list = &dev->mode_config.connector_list; struct intel_dp *intel_dp; - if (!dev) - return -ENODEV; - list_for_each_entry(connector, connector_list, head) { if (connector->connector_type != @@ -4150,9 +4137,6 @@ static int i915_displayport_test_data_show(struct seq_file *m, void *data) struct list_head *connector_list = &dev->mode_config.connector_list; struct intel_dp *intel_dp; - if (!dev) - return -ENODEV; - list_for_each_entry(connector, connector_list, head) { if (connector->connector_type != @@ -4192,9 +4176,6 @@ static int i915_displayport_test_type_show(struct seq_file *m, void *data) struct list_head *connector_list = &dev->mode_config.connector_list; struct intel_dp *intel_dp; - if (!dev) - return -ENODEV; - list_for_each_entry(connector, connector_list, head) { if (connector->connector_type !=
While creating the debugfs file we are setting the inode->i_private to dev. That same dev is passed to these functions as private of struct seq_file via single_open(). Moreover single_open is setting file->private_data->private to dev. So at this point it can never be NULL. This check was added by commit eb3394faeb97 ("drm/i915: Add debugfs test control files for Displayport compliance testing") Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org> --- v3: removed the check in i915_displayport_test_active_write also v2: removed null check v1 was drm/i915: fix possible null pointer dereference drivers/gpu/drm/i915/i915_debugfs.c | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-)