Commit c7a29183 authored by Dan Carpenter's avatar Dan Carpenter Committed by Matthew Garrett

sony-laptop: fix sony_nc_sysfs_store()

We made this an unsigned long and it causes a bug on 64 bit big endian
systems when we try to pass the value to sony_nc_int_call().

Also value has to be signed because validate() returns negative error
codes.
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarMattia Dongili <malattia@linux.it>
Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
parent ca3c2c70
...@@ -973,7 +973,7 @@ static ssize_t sony_nc_sysfs_store(struct device *dev, ...@@ -973,7 +973,7 @@ static ssize_t sony_nc_sysfs_store(struct device *dev,
struct device_attribute *attr, struct device_attribute *attr,
const char *buffer, size_t count) const char *buffer, size_t count)
{ {
unsigned long value = 0; int value;
int ret = 0; int ret = 0;
struct sony_nc_value *item = struct sony_nc_value *item =
container_of(attr, struct sony_nc_value, devattr); container_of(attr, struct sony_nc_value, devattr);
...@@ -984,7 +984,7 @@ static ssize_t sony_nc_sysfs_store(struct device *dev, ...@@ -984,7 +984,7 @@ static ssize_t sony_nc_sysfs_store(struct device *dev,
if (count > 31) if (count > 31)
return -EINVAL; return -EINVAL;
if (kstrtoul(buffer, 10, &value)) if (kstrtoint(buffer, 10, &value))
return -EINVAL; return -EINVAL;
if (item->validate) if (item->validate)
...@@ -994,7 +994,7 @@ static ssize_t sony_nc_sysfs_store(struct device *dev, ...@@ -994,7 +994,7 @@ static ssize_t sony_nc_sysfs_store(struct device *dev,
return value; return value;
ret = sony_nc_int_call(sony_nc_acpi_handle, *item->acpiset, ret = sony_nc_int_call(sony_nc_acpi_handle, *item->acpiset,
(int *)&value, NULL); &value, NULL);
if (ret < 0) if (ret < 0)
return -EIO; return -EIO;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment