From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-sn1nam02on0108.outbound.protection.outlook.com ([104.47.36.108]:29109 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1032492AbeCAPg4 (ORCPT ); Thu, 1 Mar 2018 10:36:56 -0500 From: Sasha Levin To: "stable@vger.kernel.org" , "stable-commits@vger.kernel.org" CC: Shuah Khan , Greg Kroah-Hartman , Sasha Levin Subject: [added to the 4.1 stable tree] usbip: keep usbip_device sockfd state in sync with tcp_socket Date: Thu, 1 Mar 2018 15:26:47 +0000 Message-ID: <20180301152116.1486-400-alexander.levin@microsoft.com> References: <20180301152116.1486-1-alexander.levin@microsoft.com> In-Reply-To: <20180301152116.1486-1-alexander.levin@microsoft.com> Content-Language: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Sender: stable-owner@vger.kernel.org List-ID: From: Shuah Khan This patch has been added to the 4.1 stable tree. If you have any objections, please let us know. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D [ Upstream commit 009f41aed4b3e11e6dc1e3c07377a10c20f1a5ed ] Keep usbip_device sockfd state in sync with tcp_socket. When tcp_socket is reset to null, reset sockfd to -1 to keep it in sync. Signed-off-by: Shuah Khan Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/usb/usbip/stub_dev.c | 3 +++ drivers/usb/usbip/vhci_hcd.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/drivers/usb/usbip/stub_dev.c b/drivers/usb/usbip/stub_dev.c index ec38370ffcab..0931f3271119 100644 --- a/drivers/usb/usbip/stub_dev.c +++ b/drivers/usb/usbip/stub_dev.c @@ -87,6 +87,7 @@ static ssize_t store_sockfd(struct device *dev, struct de= vice_attribute *attr, goto err; =20 sdev->ud.tcp_socket =3D socket; + sdev->ud.sockfd =3D sockfd; =20 spin_unlock_irq(&sdev->ud.lock); =20 @@ -186,6 +187,7 @@ static void stub_shutdown_connection(struct usbip_devic= e *ud) if (ud->tcp_socket) { sockfd_put(ud->tcp_socket); ud->tcp_socket =3D NULL; + ud->sockfd =3D -1; } =20 /* 3. free used data */ @@ -280,6 +282,7 @@ static struct stub_device *stub_device_alloc(struct usb= _device *udev) sdev->ud.status =3D SDEV_ST_AVAILABLE; spin_lock_init(&sdev->ud.lock); sdev->ud.tcp_socket =3D NULL; + sdev->ud.sockfd =3D -1; =20 INIT_LIST_HEAD(&sdev->priv_init); INIT_LIST_HEAD(&sdev->priv_tx); diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c index 0231507837fe..17498af82b69 100644 --- a/drivers/usb/usbip/vhci_hcd.c +++ b/drivers/usb/usbip/vhci_hcd.c @@ -780,6 +780,7 @@ static void vhci_shutdown_connection(struct usbip_devic= e *ud) if (vdev->ud.tcp_socket) { sockfd_put(vdev->ud.tcp_socket); vdev->ud.tcp_socket =3D NULL; + vdev->ud.sockfd =3D -1; } pr_info("release socket\n"); =20 @@ -826,6 +827,7 @@ static void vhci_device_reset(struct usbip_device *ud) if (ud->tcp_socket) { sockfd_put(ud->tcp_socket); ud->tcp_socket =3D NULL; + ud->sockfd =3D -1; } ud->status =3D VDEV_ST_NULL; =20 --=20 2.14.1