Skip to content

Commit ca389a5

Browse files
Hans de GoedeJiri Kosina
authored andcommitted
HID: logitech-dj: Remove duplicate error logging
logi_dj_recv_query_paired_devices() and logi_dj_recv_switch_to_dj_mode() both have 2 callers which all log an error if the function fails. Move the error logging to inside these 2 functions to remove the duplicated error logging in the callers. While at it also move the logi_dj_recv_send_report() call error handling in logi_dj_recv_switch_to_dj_mode() to directly after the call. That call only fails if the report cannot be found and in that case it does nothing, so the msleep() is not necessary on failures. Fixes: 6f20d32 ("HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode()") Cc: stable@vger.kernel.org Signed-off-by: Hans de Goede <johannes.goede@oss.qualcomm.com> Signed-off-by: Jiri Kosina <jkosina@suse.com>
1 parent a78eb69 commit ca389a5

1 file changed

Lines changed: 23 additions & 33 deletions

File tree

drivers/hid/hid-logitech-dj.c

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,6 @@ static void delayedwork_callback(struct work_struct *work)
805805
struct dj_workitem workitem;
806806
unsigned long flags;
807807
int count;
808-
int retval;
809808

810809
dbg_hid("%s\n", __func__);
811810

@@ -842,11 +841,7 @@ static void delayedwork_callback(struct work_struct *work)
842841
logi_dj_recv_destroy_djhid_device(djrcv_dev, &workitem);
843842
break;
844843
case WORKITEM_TYPE_UNKNOWN:
845-
retval = logi_dj_recv_query_paired_devices(djrcv_dev);
846-
if (retval) {
847-
hid_err(djrcv_dev->hidpp, "%s: logi_dj_recv_query_paired_devices error: %d\n",
848-
__func__, retval);
849-
}
844+
logi_dj_recv_query_paired_devices(djrcv_dev);
850845
break;
851846
case WORKITEM_TYPE_EMPTY:
852847
dbg_hid("%s: device list is empty\n", __func__);
@@ -1239,8 +1234,10 @@ static int logi_dj_recv_query_paired_devices(struct dj_receiver_dev *djrcv_dev)
12391234

12401235
djrcv_dev->last_query = jiffies;
12411236

1242-
if (djrcv_dev->type != recvr_type_dj)
1243-
return logi_dj_recv_query_hidpp_devices(djrcv_dev);
1237+
if (djrcv_dev->type != recvr_type_dj) {
1238+
retval = logi_dj_recv_query_hidpp_devices(djrcv_dev);
1239+
goto out;
1240+
}
12441241

12451242
dj_report = kzalloc(sizeof(struct dj_report), GFP_KERNEL);
12461243
if (!dj_report)
@@ -1250,6 +1247,10 @@ static int logi_dj_recv_query_paired_devices(struct dj_receiver_dev *djrcv_dev)
12501247
dj_report->report_type = REPORT_TYPE_CMD_GET_PAIRED_DEVICES;
12511248
retval = logi_dj_recv_send_report(djrcv_dev, dj_report);
12521249
kfree(dj_report);
1250+
out:
1251+
if (retval < 0)
1252+
hid_err(djrcv_dev->hidpp, "%s error:%d\n", __func__, retval);
1253+
12531254
return retval;
12541255
}
12551256

@@ -1275,6 +1276,8 @@ static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev,
12751276
(u8)timeout;
12761277

12771278
retval = logi_dj_recv_send_report(djrcv_dev, dj_report);
1279+
if (retval)
1280+
goto out;
12781281

12791282
/*
12801283
* Ugly sleep to work around a USB 3.0 bug when the receiver is
@@ -1283,11 +1286,6 @@ static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev,
12831286
* 50 msec should gives enough time to the receiver to be ready.
12841287
*/
12851288
msleep(50);
1286-
1287-
if (retval) {
1288-
kfree(dj_report);
1289-
return retval;
1290-
}
12911289
}
12921290

12931291
/*
@@ -1313,7 +1311,12 @@ static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev,
13131311
HIDPP_REPORT_SHORT_LENGTH, HID_OUTPUT_REPORT,
13141312
HID_REQ_SET_REPORT);
13151313

1314+
out:
13161315
kfree(dj_report);
1316+
1317+
if (retval < 0)
1318+
hid_err(hdev, "%s error:%d\n", __func__, retval);
1319+
13171320
return retval;
13181321
}
13191322

@@ -1835,11 +1838,8 @@ static int logi_dj_probe(struct hid_device *hdev,
18351838

18361839
if (has_hidpp) {
18371840
retval = logi_dj_recv_switch_to_dj_mode(djrcv_dev, 0);
1838-
if (retval < 0) {
1839-
hid_err(hdev, "%s: logi_dj_recv_switch_to_dj_mode returned error:%d\n",
1840-
__func__, retval);
1841+
if (retval < 0)
18411842
goto switch_to_dj_mode_fail;
1842-
}
18431843
}
18441844

18451845
/* This is enabling the polling urb on the IN endpoint */
@@ -1857,15 +1857,11 @@ static int logi_dj_probe(struct hid_device *hdev,
18571857
spin_lock_irqsave(&djrcv_dev->lock, flags);
18581858
djrcv_dev->ready = true;
18591859
spin_unlock_irqrestore(&djrcv_dev->lock, flags);
1860-
retval = logi_dj_recv_query_paired_devices(djrcv_dev);
1861-
if (retval < 0) {
1862-
hid_err(hdev, "%s: logi_dj_recv_query_paired_devices error:%d\n",
1863-
__func__, retval);
1864-
/*
1865-
* This can happen with a KVM, let the probe succeed,
1866-
* logi_dj_recv_queue_unknown_work will retry later.
1867-
*/
1868-
}
1860+
/*
1861+
* This can fail with a KVM. Ignore errors to let the probe
1862+
* succeed, logi_dj_recv_queue_unknown_work will retry later.
1863+
*/
1864+
logi_dj_recv_query_paired_devices(djrcv_dev);
18691865
}
18701866

18711867
return 0;
@@ -1882,18 +1878,12 @@ static int logi_dj_probe(struct hid_device *hdev,
18821878
#ifdef CONFIG_PM
18831879
static int logi_dj_reset_resume(struct hid_device *hdev)
18841880
{
1885-
int retval;
18861881
struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev);
18871882

18881883
if (!djrcv_dev || djrcv_dev->hidpp != hdev)
18891884
return 0;
18901885

1891-
retval = logi_dj_recv_switch_to_dj_mode(djrcv_dev, 0);
1892-
if (retval < 0) {
1893-
hid_err(hdev, "%s: logi_dj_recv_switch_to_dj_mode returned error:%d\n",
1894-
__func__, retval);
1895-
}
1896-
1886+
logi_dj_recv_switch_to_dj_mode(djrcv_dev, 0);
18971887
return 0;
18981888
}
18991889
#endif

0 commit comments

Comments
 (0)