Hi, On 12/2/20 7:56 AM, Divya Bharathi wrote: > BIOS sets incorrect value (zero) when SET value passed for integer attribute > with + sign. Added workaround to remove + sign before passing input to BIOS > > Co-developed-by: Mario Limonciello <mario.limonciello@xxxxxxxx> > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxxx> > Co-developed-by: Prasanth KSR <prasanth.ksr@xxxxxxxx> > Signed-off-by: Prasanth KSR <prasanth.ksr@xxxxxxxx> > Signed-off-by: Divya Bharathi <divya.bharathi@xxxxxxxx> > --- > drivers/platform/x86/dell-wmi-sysman/int-attributes.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/platform/x86/dell-wmi-sysman/int-attributes.c b/drivers/platform/x86/dell-wmi-sysman/int-attributes.c > index ea773d8e8d3a..f30d155135c3 100644 > --- a/drivers/platform/x86/dell-wmi-sysman/int-attributes.c > +++ b/drivers/platform/x86/dell-wmi-sysman/int-attributes.c > @@ -39,7 +39,7 @@ static ssize_t current_value_show(struct kobject *kobj, struct kobj_attribute *a > * @instance_id: The instance on which input is validated > * @buf: Input value > */ > -static int validate_integer_input(int instance_id, const char *buf) > +static int validate_integer_input(int instance_id, char *buf) > { > int in_val; > int ret; > @@ -51,6 +51,12 @@ static int validate_integer_input(int instance_id, const char *buf) > in_val > wmi_priv.integer_data[instance_id].max_value) > return -EINVAL; > > + /* workaround for BIOS error. > + * validate input to avoid setting 0 when integer input passed with + sign > + */ > + if (*buf == '+') > + memmove(buf, (buf + 1), strlen(buf)); Can you please use "strlen(buf + 1) + 1" as last argument to the memmove? I know the effect is the same but that makes it much clearer that you are also moving the terminating 0 (which at first I thought you were not). Otherwise this looks good to me. Regards, Hans