| From foo@baz Fri Jan 22 01:21:57 PM CET 2021 |
| From: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com> |
| Date: Fri, 8 Jan 2021 09:58:39 +0000 |
| Subject: rndis_host: set proper input size for OID_GEN_PHYSICAL_MEDIUM request |
| |
| From: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com> |
| |
| [ Upstream commit e56b3d94d939f52d46209b9e1b6700c5bfff3123 ] |
| |
| MSFT ActiveSync implementation requires that the size of the response for |
| incoming query is to be provided in the request input length. Failure to |
| set the input size proper results in failed request transfer, where the |
| ActiveSync counterpart reports the NDIS_STATUS_INVALID_LENGTH (0xC0010014L) |
| error. |
| |
| Set the input size for OID_GEN_PHYSICAL_MEDIUM query to the expected size |
| of the response in order for the ActiveSync to properly respond to the |
| request. |
| |
| Fixes: 039ee17d1baa ("rndis_host: Add RNDIS physical medium checking into generic_rndis_bind()") |
| Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com> |
| Link: https://lore.kernel.org/r/20210108095839.3335-1-andrey.zhizhikin@leica-geosystems.com |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/usb/rndis_host.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/net/usb/rndis_host.c |
| +++ b/drivers/net/usb/rndis_host.c |
| @@ -399,7 +399,7 @@ generic_rndis_bind(struct usbnet *dev, s |
| reply_len = sizeof *phym; |
| retval = rndis_query(dev, intf, u.buf, |
| RNDIS_OID_GEN_PHYSICAL_MEDIUM, |
| - 0, (void **) &phym, &reply_len); |
| + reply_len, (void **)&phym, &reply_len); |
| if (retval != 0 || !phym) { |
| /* OID is optional so don't fail here. */ |
| phym_unspec = cpu_to_le32(RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED); |