Message ID | 20230320153419.9185-1-n.zhandarovich@fintech.ru (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Jiri Kosina |
Headers | show |
Series | HID: wiimote: check completion in wiimod_battery_get_property | expand |
Hi On Mon, 20 Mar 2023 at 16:34, Nikita Zhandarovich <n.zhandarovich@fintech.ru> wrote: > > wiimote_cmd_wait() in wiimod_battery_get_property() may signal that the > task of getting specific battery property was interrupted or timed out. > There is no need to do any further computation in such cases, so just > return the error. > > Found by Linux Verification Center (linuxtesting.org) with static > analysis tool SVACE. > > Fixes: dcf392313817 ("HID: wiimote: convert BATTERY to module") > Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru> > --- > drivers/hid/hid-wiimote-modules.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/hid/hid-wiimote-modules.c b/drivers/hid/hid-wiimote-modules.c > index dbccdfa63916..9755718d9856 100644 > --- a/drivers/hid/hid-wiimote-modules.c > +++ b/drivers/hid/hid-wiimote-modules.c > @@ -220,8 +220,10 @@ static int wiimod_battery_get_property(struct power_supply *psy, > wiiproto_req_status(wdata); > spin_unlock_irqrestore(&wdata->state.lock, flags); > > - wiimote_cmd_wait(wdata); > + ret = wiimote_cmd_wait(wdata); > wiimote_cmd_release(wdata); > + if (ret) > + return ret; The current code returns cached battery-information in case a synchronous update did not succeed. Battery information is likely updated regularly, anyway, so the synchronous update is usually not required. I don't think bailing out and returning the error to the caller is required or gains us anything but more complexity. Or am I missing something here? Thanks David
On 3/20/23 12:08, David Rheinsberg wrote: > Hi > > On Mon, 20 Mar 2023 at 16:34, Nikita Zhandarovich > <n.zhandarovich@fintech.ru> wrote: >> >> wiimote_cmd_wait() in wiimod_battery_get_property() may signal that the >> task of getting specific battery property was interrupted or timed out. >> There is no need to do any further computation in such cases, so just >> return the error. >> >> Found by Linux Verification Center (linuxtesting.org) with static >> analysis tool SVACE. >> >> Fixes: dcf392313817 ("HID: wiimote: convert BATTERY to module") >> Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru> >> --- >> drivers/hid/hid-wiimote-modules.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/hid/hid-wiimote-modules.c b/drivers/hid/hid-wiimote-modules.c >> index dbccdfa63916..9755718d9856 100644 >> --- a/drivers/hid/hid-wiimote-modules.c >> +++ b/drivers/hid/hid-wiimote-modules.c >> @@ -220,8 +220,10 @@ static int wiimod_battery_get_property(struct power_supply *psy, >> wiiproto_req_status(wdata); >> spin_unlock_irqrestore(&wdata->state.lock, flags); >> >> - wiimote_cmd_wait(wdata); >> + ret = wiimote_cmd_wait(wdata); >> wiimote_cmd_release(wdata); >> + if (ret) >> + return ret; > > The current code returns cached battery-information in case a > synchronous update did not succeed. Battery information is likely > updated regularly, anyway, so the synchronous update is usually not > required. > > I don't think bailing out and returning the error to the caller is > required or gains us anything but more complexity. Or am I missing > something here? > > Thanks > David Hi. I think you are right, my change is not that essential to begin with and there is no urgency to patch this. Thanks for your patience, Nikita
diff --git a/drivers/hid/hid-wiimote-modules.c b/drivers/hid/hid-wiimote-modules.c index dbccdfa63916..9755718d9856 100644 --- a/drivers/hid/hid-wiimote-modules.c +++ b/drivers/hid/hid-wiimote-modules.c @@ -220,8 +220,10 @@ static int wiimod_battery_get_property(struct power_supply *psy, wiiproto_req_status(wdata); spin_unlock_irqrestore(&wdata->state.lock, flags); - wiimote_cmd_wait(wdata); + ret = wiimote_cmd_wait(wdata); wiimote_cmd_release(wdata); + if (ret) + return ret; spin_lock_irqsave(&wdata->state.lock, flags); state = wdata->state.cmd_battery;
wiimote_cmd_wait() in wiimod_battery_get_property() may signal that the task of getting specific battery property was interrupted or timed out. There is no need to do any further computation in such cases, so just return the error. Found by Linux Verification Center (linuxtesting.org) with static analysis tool SVACE. Fixes: dcf392313817 ("HID: wiimote: convert BATTERY to module") Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru> --- drivers/hid/hid-wiimote-modules.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)