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.limoncie...@dell.com> > Signed-off-by: Mario Limonciello <mario.limoncie...@dell.com> > Co-developed-by: Prasanth KSR <prasanth....@dell.com> > Signed-off-by: Prasanth KSR <prasanth....@dell.com> > Signed-off-by: Divya Bharathi <divya.bhara...@dell.com> > --- > 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