@@ -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
18831879static 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