usb: fix various gadgets null ptr deref on 10gbps cabling.

This avoids a null pointer dereference in
f_{ecm,eem,hid,loopback,printer,rndis,serial,sourcesink,subset,tcm}
by simply reusing the 5gbps config for 10gbps.

Fixes: eaef50c76057 ("usb: gadget: Update usb_assign_descriptors for SuperSpeedPlus")
Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: Felipe Balbi <balbi@kernel.org>
Cc: Gustavo A. R. Silva <gustavoars@kernel.org>
Cc: Lorenzo Colitti <lorenzo@google.com>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: Michael R Sweet <msweet@msweet.org>
Cc: Mike Christie <michael.christie@oracle.com>
Cc: Pawel Laszczak <pawell@cadence.com>
Cc: Peter Chen <peter.chen@nxp.com>
Cc: Sudhakar Panneerselvam <sudhakar.panneerselvam@oracle.com>
Cc: Wei Ming Chen <jj251510319013@gmail.com>
Cc: Will McVicker <willmcvicker@google.com>
Cc: Zqiang <qiang.zhang@windriver.com>
Reviewed-By: Lorenzo Colitti <lorenzo@google.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Link: https://lore.kernel.org/r/20210608044141.3898496-1-zenczykowski@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by Maciej Żenczykowski and committed by Greg Kroah-Hartman 90c4d057 d1658268

+14 -10
+1 -1
drivers/usb/gadget/function/f_ecm.c
··· 791 791 fs_ecm_notify_desc.bEndpointAddress; 792 792 793 793 status = usb_assign_descriptors(f, ecm_fs_function, ecm_hs_function, 794 - ecm_ss_function, NULL); 794 + ecm_ss_function, ecm_ss_function); 795 795 if (status) 796 796 goto fail; 797 797
+1 -1
drivers/usb/gadget/function/f_eem.c
··· 302 302 eem_ss_out_desc.bEndpointAddress = eem_fs_out_desc.bEndpointAddress; 303 303 304 304 status = usb_assign_descriptors(f, eem_fs_function, eem_hs_function, 305 - eem_ss_function, NULL); 305 + eem_ss_function, eem_ss_function); 306 306 if (status) 307 307 goto fail; 308 308
+2 -1
drivers/usb/gadget/function/f_hid.c
··· 802 802 hidg_fs_out_ep_desc.bEndpointAddress; 803 803 804 804 status = usb_assign_descriptors(f, hidg_fs_descriptors, 805 - hidg_hs_descriptors, hidg_ss_descriptors, NULL); 805 + hidg_hs_descriptors, hidg_ss_descriptors, 806 + hidg_ss_descriptors); 806 807 if (status) 807 808 goto fail; 808 809
+1 -1
drivers/usb/gadget/function/f_loopback.c
··· 207 207 ss_loop_sink_desc.bEndpointAddress = fs_loop_sink_desc.bEndpointAddress; 208 208 209 209 ret = usb_assign_descriptors(f, fs_loopback_descs, hs_loopback_descs, 210 - ss_loopback_descs, NULL); 210 + ss_loopback_descs, ss_loopback_descs); 211 211 if (ret) 212 212 return ret; 213 213
+2 -1
drivers/usb/gadget/function/f_printer.c
··· 1101 1101 ss_ep_out_desc.bEndpointAddress = fs_ep_out_desc.bEndpointAddress; 1102 1102 1103 1103 ret = usb_assign_descriptors(f, fs_printer_function, 1104 - hs_printer_function, ss_printer_function, NULL); 1104 + hs_printer_function, ss_printer_function, 1105 + ss_printer_function); 1105 1106 if (ret) 1106 1107 return ret; 1107 1108
+1 -1
drivers/usb/gadget/function/f_rndis.c
··· 789 789 ss_notify_desc.bEndpointAddress = fs_notify_desc.bEndpointAddress; 790 790 791 791 status = usb_assign_descriptors(f, eth_fs_function, eth_hs_function, 792 - eth_ss_function, NULL); 792 + eth_ss_function, eth_ss_function); 793 793 if (status) 794 794 goto fail; 795 795
+1 -1
drivers/usb/gadget/function/f_serial.c
··· 233 233 gser_ss_out_desc.bEndpointAddress = gser_fs_out_desc.bEndpointAddress; 234 234 235 235 status = usb_assign_descriptors(f, gser_fs_function, gser_hs_function, 236 - gser_ss_function, NULL); 236 + gser_ss_function, gser_ss_function); 237 237 if (status) 238 238 goto fail; 239 239 dev_dbg(&cdev->gadget->dev, "generic ttyGS%d: %s speed IN/%s OUT/%s\n",
+2 -1
drivers/usb/gadget/function/f_sourcesink.c
··· 431 431 ss_iso_sink_desc.bEndpointAddress = fs_iso_sink_desc.bEndpointAddress; 432 432 433 433 ret = usb_assign_descriptors(f, fs_source_sink_descs, 434 - hs_source_sink_descs, ss_source_sink_descs, NULL); 434 + hs_source_sink_descs, ss_source_sink_descs, 435 + ss_source_sink_descs); 435 436 if (ret) 436 437 return ret; 437 438
+1 -1
drivers/usb/gadget/function/f_subset.c
··· 358 358 fs_subset_out_desc.bEndpointAddress; 359 359 360 360 status = usb_assign_descriptors(f, fs_eth_function, hs_eth_function, 361 - ss_eth_function, NULL); 361 + ss_eth_function, ss_eth_function); 362 362 if (status) 363 363 goto fail; 364 364
+2 -1
drivers/usb/gadget/function/f_tcm.c
··· 2057 2057 uasp_fs_cmd_desc.bEndpointAddress = uasp_ss_cmd_desc.bEndpointAddress; 2058 2058 2059 2059 ret = usb_assign_descriptors(f, uasp_fs_function_desc, 2060 - uasp_hs_function_desc, uasp_ss_function_desc, NULL); 2060 + uasp_hs_function_desc, uasp_ss_function_desc, 2061 + uasp_ss_function_desc); 2061 2062 if (ret) 2062 2063 goto ep_fail; 2063 2064