Using plain echo to set the "force" connector attribute fails with -EINVAL, because echo appends a newline to the output.
Strip trailing whitespace in the input before checking the value to accept "off\n" or "off ".
Signed-off-by: Michael Tretter m.tretter@pengutronix.de --- drivers/gpu/drm/drm_debugfs.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index c1807d5754b2..10dd89d3f28e 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -241,6 +241,7 @@ static ssize_t connector_write(struct file *file, const char __user *ubuf, struct seq_file *m = file->private_data; struct drm_connector *connector = m->private; char buf[12]; + int i;
if (len > sizeof(buf) - 1) return -EINVAL; @@ -250,6 +251,10 @@ static ssize_t connector_write(struct file *file, const char __user *ubuf,
buf[len] = '\0';
+ /* strip trailing whitespace */ + for (i = len - 1; i > 0 && isspace(buf[i]); i--) + buf[i] = '\0'; + if (!strcmp(buf, "on")) connector->force = DRM_FORCE_ON; else if (!strcmp(buf, "digital"))
On Wed, 16 Aug 2017, Michael Tretter m.tretter@pengutronix.de wrote:
Using plain echo to set the "force" connector attribute fails with -EINVAL, because echo appends a newline to the output.
Strip trailing whitespace in the input before checking the value to accept "off\n" or "off ".
Please replace the strcmp() calls with sysfs_streq() instead.
BR, Jani.
Signed-off-by: Michael Tretter m.tretter@pengutronix.de
drivers/gpu/drm/drm_debugfs.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index c1807d5754b2..10dd89d3f28e 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -241,6 +241,7 @@ static ssize_t connector_write(struct file *file, const char __user *ubuf, struct seq_file *m = file->private_data; struct drm_connector *connector = m->private; char buf[12];
int i;
if (len > sizeof(buf) - 1) return -EINVAL;
@@ -250,6 +251,10 @@ static ssize_t connector_write(struct file *file, const char __user *ubuf,
buf[len] = '\0';
- /* strip trailing whitespace */
- for (i = len - 1; i > 0 && isspace(buf[i]); i--)
buf[i] = '\0';
- if (!strcmp(buf, "on")) connector->force = DRM_FORCE_ON; else if (!strcmp(buf, "digital"))
Using plain echo to set the "force" connector attribute fails with -EINVAL, because echo appends a newline to the output.
Replace strcmp with sysfs_streq to also accept strings that end with a newline.
v2: use sysfs_streq instead of stripping trailing whitespace
Signed-off-by: Michael Tretter m.tretter@pengutronix.de --- drivers/gpu/drm/drm_debugfs.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index c1807d5754b2..454deba13ee5 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -250,13 +250,13 @@ static ssize_t connector_write(struct file *file, const char __user *ubuf,
buf[len] = '\0';
- if (!strcmp(buf, "on")) + if (sysfs_streq(buf, "on")) connector->force = DRM_FORCE_ON; - else if (!strcmp(buf, "digital")) + else if (sysfs_streq(buf, "digital")) connector->force = DRM_FORCE_ON_DIGITAL; - else if (!strcmp(buf, "off")) + else if (sysfs_streq(buf, "off")) connector->force = DRM_FORCE_OFF; - else if (!strcmp(buf, "unspecified")) + else if (sysfs_streq(buf, "unspecified")) connector->force = DRM_FORCE_UNSPECIFIED; else return -EINVAL;
On Thu, 17 Aug 2017, Michael Tretter m.tretter@pengutronix.de wrote:
Using plain echo to set the "force" connector attribute fails with -EINVAL, because echo appends a newline to the output.
Replace strcmp with sysfs_streq to also accept strings that end with a newline.
v2: use sysfs_streq instead of stripping trailing whitespace
Signed-off-by: Michael Tretter m.tretter@pengutronix.de
Reviewed-by: Jani Nikula jani.nikula@intel.com
drivers/gpu/drm/drm_debugfs.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index c1807d5754b2..454deba13ee5 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -250,13 +250,13 @@ static ssize_t connector_write(struct file *file, const char __user *ubuf,
buf[len] = '\0';
- if (!strcmp(buf, "on"))
- if (sysfs_streq(buf, "on")) connector->force = DRM_FORCE_ON;
- else if (!strcmp(buf, "digital"))
- else if (sysfs_streq(buf, "digital")) connector->force = DRM_FORCE_ON_DIGITAL;
- else if (!strcmp(buf, "off"))
- else if (sysfs_streq(buf, "off")) connector->force = DRM_FORCE_OFF;
- else if (!strcmp(buf, "unspecified"))
- else if (sysfs_streq(buf, "unspecified")) connector->force = DRM_FORCE_UNSPECIFIED; else return -EINVAL;
On Thu, 17 Aug 2017 at 12:34, Jani Nikula jani.nikula@linux.intel.com wrote:
On Thu, 17 Aug 2017, Michael Tretter m.tretter@pengutronix.de wrote:
Using plain echo to set the "force" connector attribute fails with -EINVAL, because echo appends a newline to the output.
Replace strcmp with sysfs_streq to also accept strings that end with a newline.
v2: use sysfs_streq instead of stripping trailing whitespace
Signed-off-by: Michael Tretter m.tretter@pengutronix.de
Reviewed-by: Jani Nikula jani.nikula@intel.com
Seems like this fell through the cracks. Pushed to drm-misc-next.
Thanks Emil
On Sun, 17 May 2020, Emil Velikov emil.l.velikov@gmail.com wrote:
On Thu, 17 Aug 2017 at 12:34, Jani Nikula jani.nikula@linux.intel.com wrote:
On Thu, 17 Aug 2017, Michael Tretter m.tretter@pengutronix.de wrote:
Using plain echo to set the "force" connector attribute fails with -EINVAL, because echo appends a newline to the output.
Replace strcmp with sysfs_streq to also accept strings that end with a newline.
v2: use sysfs_streq instead of stripping trailing whitespace
Signed-off-by: Michael Tretter m.tretter@pengutronix.de
Reviewed-by: Jani Nikula jani.nikula@intel.com
Seems like this fell through the cracks. Pushed to drm-misc-next.
From 2017? How'd you find it? :o
My bad, thanks.
BR, Jani.
On Mon, 18 May 2020 at 10:22, Jani Nikula jani.nikula@linux.intel.com wrote:
On Sun, 17 May 2020, Emil Velikov emil.l.velikov@gmail.com wrote:
On Thu, 17 Aug 2017 at 12:34, Jani Nikula jani.nikula@linux.intel.com wrote:
On Thu, 17 Aug 2017, Michael Tretter m.tretter@pengutronix.de wrote:
Using plain echo to set the "force" connector attribute fails with -EINVAL, because echo appends a newline to the output.
Replace strcmp with sysfs_streq to also accept strings that end with a newline.
v2: use sysfs_streq instead of stripping trailing whitespace
Signed-off-by: Michael Tretter m.tretter@pengutronix.de
Reviewed-by: Jani Nikula jani.nikula@intel.com
Seems like this fell through the cracks. Pushed to drm-misc-next.
From 2017? How'd you find it? :o
My bad, thanks.
A colleague mentioned about their experiences with \n, so I remembered seeing something.
From a quick grep, we have have handful of other cases mostly in
amdgpu and radeon. Will see it I can prep a patch later on today.
-Emil
dri-devel@lists.freedesktop.org