Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -973,7 +973,7 @@ static ssize_t sony_nc_sysfs_store(struct device *dev,
			       struct device_attribute *attr,
			       const char *buffer, size_t count)
{
	unsigned long value = 0;
	int value;
	int ret = 0;
	struct sony_nc_value *item =
	    container_of(attr, struct sony_nc_value, devattr);
@@ -984,7 +984,7 @@ static ssize_t sony_nc_sysfs_store(struct device *dev,
	if (count > 31)
		return -EINVAL;

	if (kstrtoul(buffer, 10, &value))
	if (kstrtoint(buffer, 10, &value))
		return -EINVAL;

	if (item->validate)
@@ -994,7 +994,7 @@ static ssize_t sony_nc_sysfs_store(struct device *dev,
		return value;

	ret = sony_nc_int_call(sony_nc_acpi_handle, *item->acpiset,
			(int *)&value, NULL);
			       &value, NULL);
	if (ret < 0)
		return -EIO;