From patchwork Wed Feb 5 06:38:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?6IOh6L+e5Yuk?= X-Patchwork-Id: 13960627 Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sg2apc01on2047.outbound.protection.outlook.com [40.107.215.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6CF9F21E097; Wed, 5 Feb 2025 06:38:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.215.47 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738737537; cv=fail; b=OLQlk8BDPQ3HN1t6E/xvYP8iIFoVxtPvXJrsHfGnkQ48vnffJsy2EQ9sFkB8TLxahGusKD7TtHJJL4Twou0wc+Qy0uCNKlvUbhbAlKtqpSrdH8VOR+FlRJ+sM4+f3VoOBjhAm/HKqQbX/YZ9vHtBlbUZJljUmNyyEVIzlY6eqzE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738737537; c=relaxed/simple; bh=RpSAz8Lde1WxHRIaptXyN8nUW+B9wTDfk+yx2qq/CbA=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=CmC/ONsKSkUsSESq1hHh/VZphlNSa/zznqpvbw4zOhoP1lLCtY20ZLrSStmwr9u4ZWksDRAgFGoDJlvJ3CRnJHUMJ0Gjz+c9puAPhEhv73XzWYuQcjlR16k8rO30BSKDUSlNeINRVcCd4rfKEg1GKM60fUk3pEsOD9BJ6dWmw+M= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com; spf=pass smtp.mailfrom=vivo.com; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b=TEeCgvv+; arc=fail smtp.client-ip=40.107.215.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vivo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b="TEeCgvv+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nZHXPfOouMt+iztOFO5OUFQB+Kn2EhKxm5IZfswOml+de/Bqjb950B8MR5bNHmhYZa9oTlP2772PU4NlhGNrf9XsZYhEgntlKAqq/CGKdpNS6qWDt8lIhFoYUCxVz84v0by5hCQrAYlf2ugdjG1Ak+kgy9Mvx7TOZcplLb00VIHw8N1wPzH/4FPwbxRJEC1CJex6FxXnh/G3tp19/OtozJeisiEVVA2ancfLo6BzUwYZEPMGToPhDB49XlkIION2hlPxUXwbK6iR86lQ/MEEvqrkXoewQXXAPsHFLMwFgJbPZ9oF9Sloye0bbTCPtKEZ8ZFLZUYyyNgk/n163j1EhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RpSAz8Lde1WxHRIaptXyN8nUW+B9wTDfk+yx2qq/CbA=; b=FWj3aNF48PqMazeOcL2Kv9bOFnvajtSEXusmzM2aWdUvgtImudhqtCXuLbkS7jXB0vxMVCaXwCRgnfg+hdjVsutZaE0pAlqWPJOPIEvECZwEHfyfRcsgVOfz/he4vJJdRrKW6tXOg1Hk3l9hk4HyDhe0FnlQZkv1KzVkqjAOuVITVvFxOrGIB04MbIp6sa13GvDYTL+etm79MvFr2bmJt/zby3CGb1GsW5OgwscnLBAJCo+LgwgVKmZNOdAV/yepKW1nPT6YW1zqMPcITXIcr7hESgbHQcpUZisUpLPRxF9IkE6UFocx8I1AHqxzLaGr8Oeco4C4gSguFtzcqmX3aQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vivo.com; dmarc=pass action=none header.from=vivo.com; dkim=pass header.d=vivo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vivo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RpSAz8Lde1WxHRIaptXyN8nUW+B9wTDfk+yx2qq/CbA=; b=TEeCgvv+u/J6QiB38+gJxdvTNITSEO7ACOyGa795KVQuZ0Z7dXdaBq73znnMYgNf9crI4npmfPxss0lFh6lTBp69kVRvnBFsqA09TXR0DoD3IE9v+PEE0Rmi3aJwQ3kEQg7fQV23TBFcBgyCvCAt7BrOZKNollbebmP7alyTHMedCtrlzu5E8vt4yTnsR61cfHqHe9d9QUTSyiaLZNb/9jGB8ld1phE2buDys7DXR8GAEeleobfheqQP+Urz7vvgqvDzL3sGebHyOViwM2Ll8RTuExQWbEJvTKLVVwyV/SueSaL0jRJbhRo+rcUwjPMFP+kdd8v3vctQ+FdLvCxbsw== Received: from TYUPR06MB6217.apcprd06.prod.outlook.com (2603:1096:400:358::7) by TY0PR06MB5353.apcprd06.prod.outlook.com (2603:1096:400:213::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.6; Wed, 5 Feb 2025 06:38:48 +0000 Received: from TYUPR06MB6217.apcprd06.prod.outlook.com ([fe80::c18d:f7c6:7590:64fe]) by TYUPR06MB6217.apcprd06.prod.outlook.com ([fe80::c18d:f7c6:7590:64fe%6]) with mapi id 15.20.8422.005; Wed, 5 Feb 2025 06:38:48 +0000 From: =?utf-8?b?6IOh6L+e5Yuk?= To: "gregkh@linuxfoundation.org" , Dan Carpenter , Jon Hunter CC: Prashanth K , "mwalle@kernel.org" , "quic_jjohnson@quicinc.com" , David Brownell , "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , opensource.kernel , "linux-tegra@vger.kernel.org" , Brad Griffis , Harshit Mogalapalli Subject: =?utf-8?q?=E7=AD=94=E5=A4=8D=3A_=5BPATCH_v3=5D_usb=3A_gadget=3A_u?= =?utf-8?q?=5Fserial=3A_Disable_ep_before_setting_port_to_null_to_fix_the_cr?= =?utf-8?q?ash_caused_by_port_being_null?= Thread-Topic: [PATCH v3] usb: gadget: u_serial: Disable ep before setting port to null to fix the crash caused by port being null Thread-Index: AdtQVu3p636G49OMSa2yDMmE+bdUDgXwT3UAAACXZQAAA0EggAD1y7uAAGoR8AACe8P7MA== Date: Wed, 5 Feb 2025 06:38:48 +0000 Message-ID: References: <1037c1ad-9230-4181-b9c3-167dbaa47644@nvidia.com> <2025011633-cavity-earthworm-2b5e@gregkh> <3d9db530-a0b7-4f18-9ad4-233356dfe68c@nvidia.com> <0fa6c6db-fd75-4a09-b4fa-d6a98bb8afac@stanley.mountain> In-Reply-To: <0fa6c6db-fd75-4a09-b4fa-d6a98bb8afac@stanley.mountain> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYUPR06MB6217:EE_|TY0PR06MB5353:EE_ x-ms-office365-filtering-correlation-id: 106886c2-df36-4dc5-7672-08dd45afbf2c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?utf-8?q?rHfGVYMq1oWrXBJYQdzjj6mvPv0Eya9?= =?utf-8?q?J6r6iaWvsY+88/aoedtAnNGslIUF1vUDbVNnf656A7tsHyzQJwU2T5FkH/P+WOlqv?= =?utf-8?q?1weHTKP3l1jh0sX2vVyHhNKEjAXu4KPLGpWCduitC011X5Wj4gA5oefsD0Wgr+JFt?= =?utf-8?q?cKJwFnws6vXYZ6QsxA+5FPSHXTQL/RaGK1cqEUqlbg8lYXk9uuNVjGvYLGgkuIHMO?= =?utf-8?q?/1gXyPQoKgkSYZPjKvw2Y7RjPxIlBIe8n5v7Xr8faONgbjJtXPDhkiHkaHhcUU7Pv?= =?utf-8?q?Wyacl3m9hbx9dd0OgeyEeEXKJgF1O8U4D02ScXH/3dSMJSUR4wju4HNGXHhZ8MUW1?= =?utf-8?q?bUOdVx4U7BBYImMggtg5nIBoABCSf4QOl9O82UcXc9PHW4cVFZnlRqGm5IvrXDw/N?= =?utf-8?q?xIfRjmM8W/kCrYsMbue75u9j98Ou1eT+RT+uARyFQWZ4tOag6sboZc3aWIvQRgjie?= =?utf-8?q?nqLeqf3XpIX0Hwf40gR5Y4KqBxmDl/lcAWNxmzmKX3wb1n//B871BOrawjpGacp1M?= =?utf-8?q?k6VGi8KWEFetCSroW4nzuh0a9876Ox7hEgtdkEWtd7gKRYPr4G+kJAxgtMTvnlDI1?= =?utf-8?q?+OqzRGFvc0fM+xIRxLrB3NhW10EUxq9bGCFH/dsp5ZwEtWVyRKgXGMMrXi4w7bNIW?= =?utf-8?q?dLAMMpq0Q72y8tIHVtbc1vdXH+ZCgAVL6wCYll+veQRY8LqT3ZBOWYA1QxyjIPt5+?= =?utf-8?q?C7F857y+cVzz1j4UkGpmhmc3ZE3VCfs2UU9gNqs5E8Y9gopgTMVurjdcAd+HfTFJ8?= =?utf-8?q?NQzRV61KG19t3psbBtclbrAhrWzHLn5jFK6rqTN9OIRk9rFsLlofGfY7/xsTvzSoi?= =?utf-8?q?TJe0U9BySSJyxU+1wy8X90yO6qbilLIl1lrYSRwfQRQdaPsKYu3/ILQIYwpeRe+wG?= =?utf-8?q?Ymk90uXfcD6bV2ziRDIoqB78WrKkQLYyU3t7wyI8kwzTVNb36Wn1t41mANBqXedTm?= =?utf-8?q?zRGhbtAWFzCjEp2pN0UuLM1OkoTI4dz9svTXt8x22U2r0DlG/JSYrOrFDuu1ji+co?= =?utf-8?q?HbkFbtRFUt2bPMRBrgFvg8vTwVCszbXd/eanbLTnKCeQhgiPjKf+yPLRpK/h/DYio?= =?utf-8?q?AsXzVfGWJVmar0hk7uWosNyothCWKe2tild3jTwR+A/ONTftNm41k0TQRg+HQyEgL?= =?utf-8?q?6Nx1iTSJbObLTbGoEs8YGfOGrK+cNDjASKAFOqjEIbLzczVPaWaV7tTuQfbOZsAlz?= =?utf-8?q?Na1ca1dTXg7ro+EpTGrgXE+SWwHTB/cWtqPn5R37lh0NiIQvadsCC0episSeKZHrr?= =?utf-8?q?HAad1siocDTVbs68lLEEkfn6tuV8w9/4xxq8v/Zjr1lnb0xohY6ETxr7cvy1kgt3d?= =?utf-8?q?d57R+4FwiT7EjQA2FCRXKOT6yt0Do4xbrQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:zh-cn;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYUPR06MB6217.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?xubJt+ryp+MmuobK8QcQfWHPJgNn?= =?utf-8?q?wyC3SBl/LE53YQ/zTmA/i/2FHKkn0t+ZrpOq36lEFToFM3Afy8KwpkvN5rQDTRvA7?= =?utf-8?q?0Za0xYkxUwg4zVzlv30IWGHGEF6N+XF71qLipAYxVAyxCCmT/3uYKgXP0Na/PNTHu?= =?utf-8?q?35TKVPEznXoVkyNFEaFCaNtnOufrOjTUzIV6B0XfDevVEE15nUfJ/FONPdwiFSuo7?= =?utf-8?q?X+zr2siYa0ChUJw6tpoo5bNwM7bwG2/Oj7qf+DTb14MHA4OKi0ACDOtQO/X/5W3en?= =?utf-8?q?DS7/RKkg1F5E1YXbIUc7xPs3f+36BuIfCsV0xVUzInqJNl7BWOUkX57mbVFd0fldJ?= =?utf-8?q?7RYuVEM30LO0TjiSeFCYJ7vfUGbykWPGES/Wwf0aE/sUWyE/6Mk4tOVzUYJl9/8JT?= =?utf-8?q?CjsGox2Q0047ZJ4HTQYe17LFNMuPwLeH9L/5fUo+xg28HWvK4kEwCYBxbaTpMHL7W?= =?utf-8?q?Aev1TLuvjupE2uK2uv69KJGEeBJlZG3Ic/taJIySGY33W01UEBgME7mjQioOPF6HA?= =?utf-8?q?hJxMoN9K/BriYgtN779G8L57bc3QLA4cY6/1zCXiDbcXtjhMCPa/JDyT00P29deNO?= =?utf-8?q?qcMT5kjT9JZ4aJ11pInJfIyHSRRkyx+x6LKZQSBo7qoi20DGcj+NL3fuyB4LEEVim?= =?utf-8?q?iBDM910lwjlMv1rvphi5f05FnSupAtvkP0mUHe6tryisVYKZxX0mlVShF/a0owCsg?= =?utf-8?q?dg+rxJWv6ZA01S3ry3+gKWTFhdLQIoEBWpErU6NwmsnDSAO7W7ZlVkYlCbvpXnxK3?= =?utf-8?q?6zUxvDj/A5w1uHxmNX2ptTTS+vNFF3LYIpztlS0e0dg4mMwAVO8HJH9Lcg/90SqbQ?= =?utf-8?q?WAzOpWlaYzqoMNsh/k2Px5casEwdRmha53wkCWkK8D/aY6VEooXg8Vq9FvcxNsr1Y?= =?utf-8?q?sswLZEddSjPoJeP2BqOg0jKW//SZDqDe3YqlwS7UJkWE4ZSEurCvUXH6jub24THWa?= =?utf-8?q?3YPKNMutFw7mWy2eSi39wHFW0Tl0sTDwXaRi36ss7vfMeXLQjvEAVi6cRZoZzqG3u?= =?utf-8?q?0n8Z46ZUwNTUUHEiO/IcjVCHnHJy5O19KYwXlr5sCgH6hxRXnpTTpNXeTRu4Opnjq?= =?utf-8?q?Sy2II9sbKJLeXt3QM/kYXWDi6sKRKZUFokDD07JrmCQBDY5QTgEMxi62xs/2mrPeP?= =?utf-8?q?qtLyWZGVW2mVrSTYo0XAse9Ubm28NjNJiwgpdube79rdPWc0R+ahH2J+G2nspnFv8?= =?utf-8?q?uhZRXydOsn3OA1ph1PjDtALQQaT+sJKnCAed7xP/JIuA+KevX5y3r8wUcn745IDa4?= =?utf-8?q?Cqtte9hwnT0Cpta8MqNv47Zy+w2VVW3n08XlNvKDCK9KiEvm49zdIlbrgP6UPtbxo?= =?utf-8?q?GyTXLlKgmT9HnnSsK9KM8ETsICwDZDBNFsM7ImOgysLsm548pZxGYQFPzyiceG4ca?= =?utf-8?q?do4pYPVRG+79Pwnb/Ee6aidJbv4ii9tK18LI3htRb1fyTnUaFv1KjYarM9rwV9Ln3?= =?utf-8?q?bbaMV+z3RmlBylx7YwOnPORdzf6u0rDXRDrPFfNwtRDrnLck/4E/P9pw=3D?= Precedence: bulk X-Mailing-List: linux-usb@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYUPR06MB6217.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 106886c2-df36-4dc5-7672-08dd45afbf2c X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Feb 2025 06:38:48.4984 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 923e42dc-48d5-4cbe-b582-1a797a6412ed X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FCIN/3/3/Zaosd2zMfvl816+tA9SydGngEH/ES+qyVdXMe2P2M14Z7X3S7s8GangKu59IWEB7VXP7WrGwnBehw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB5353 Hi Greg, Dan,Jon, other kernel experts: > On Tue, Jan 21, 2025 at 12:19:37PM +0000, Jon Hunter wrote: > > > > > [   59.918177] tegra-xudc 3550000.usb: ep 3 disabled [ > > > > > 59.923097] tegra-xudc 3550000.usb: ep 2 disabled [   59.927955] > > > > > tegra-xudc 3550000.usb: ep 5 disabled [   80.911432] rcu: INFO: > > > > > rcu_preempt self-detected stall on CPU [   80.917354] rcu: > > > > > 6-....: (5248 ticks this GP) > > > > > idle=ec24/1/0x4000000000000000 softirq=1213/1213 fqs=2623 [ > > > > > 80.927146] rcu:     (t=5253 jiffies g=3781 q=1490 ncpus=12) [ > > > > > 80.932704] Sending NMI from CPU 6 to CPUs 2: > > > > > [   90.981555] CPU: 6 UID: 0 PID: 18 Comm: rcu_exp_gp_kthr Not > > > > > tainted 6.13.0-rc7-00043-g619f0b6fad52 #1 [   90.981558] > > > > > Hardware name: NVIDIA NVIDIA Jetson AGX Orin Developer > > > > > Kit/Jetson, BIOS 00.0.0-dev-main_92e5ae_88fd1_296de > > > > > 12/16/2024 > > > > > [   90.981559] pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DIT > > > > > -SSBS BTYPE=--) [   90.981562] pc : > > > > > smp_call_function_single+0xdc/0x1a0 > > > > > [   90.981574] lr : __sync_rcu_exp_select_node_cpus+0x228/0x3c0 > > > > > [   90.981578] sp : ffff800082eb3cd0 [   90.981579] x29: > > > > > ffff800082eb3cd0 x28: 0000000000000010 x27: > > > > > ffff0000802933c0 > > > > > [   90.981582] x26: ffff0007a8a1d700 x25: ffff800082895500 x24: > > > > > ffff800080132018 > > > > > [   90.981584] x23: 0000000000000014 x22: ffff800081fb7700 x21: > > > > > ffff80008280d970 > > > > > [   90.981586] x20: 0000000000000feb x19: ffff800082eb3d00 x18: > > > > > 0000000000000000 > > > > > [   90.981588] x17: 0000000000000000 x16: 0000000000000000 x15: > > > > > 0000000000000000 > > > > > [   90.981590] x14: ffff000080293440 x13: 0000000000000001 x12: > > > > > 0000000000000000 > > > > > [   90.981591] x11: ffff800081fb2388 x10: ffff0000802933c0 x9 : > > > > > 0000000000000001 > > > > > [   90.981593] x8 : 0000000000000040 x7 : 0000000000017068 x6 : > > > > > ffff800080132018 > > > > > [   90.981595] x5 : 0000000000000000 x4 : ffff0007a8a4f9c8 x3 : > > > > > 0000000000000001 > > > > > [   90.981597] x2 : 0000000000000000 x1 : ffff0007a8a4f9c0 x0 : > > > > > 0000000000000004 > > > > > [   90.981599] Call trace: > > > > > [   90.981601]  smp_call_function_single+0xdc/0x1a0 (P) [ > > > > > 90.981605]  __sync_rcu_exp_select_node_cpus+0x228/0x3c0 > > > > > [   90.981607]  sync_rcu_exp_select_cpus+0x13c/0x2a0 > > > > > [   90.981609]  wait_rcu_exp_gp+0x18/0x30 [   90.981611] > > > > > kthread_worker_fn+0xd0/0x188 [   90.981614]  kthread+0x118/0x11c > > > > > [   90.981619]  ret_from_fork+0x10/0x20 [  101.416347] sched: DL > > > > > replenish lagged too much > > > > > > > > > > > > > Odd, you have a usb-serial gadget device in this system that is > > > > disconnecting somehow?  That oops doesn't point to anything in the > > > > usb gadget codebase, "all" we have done is move the call to > > > > shutdown the endpoints to earlier in the disconnect function. > > > > > > Yes the board starts usb-serial and usb-ethernet gadget and on > > > reboot when tearing it down I am seeing the above. As soon as it > > > disables the tegra-xudc endpoints (as seen above) the board appears to > stall. > > > > > > > I'm glad to revert this, but it feels really odd that this is > > > > causing you an rcu stall issue. > > > > > > Thanks. I can't say I understand it either, but I am certain it is > > > caused by this change. > > > > > > Happy to run any tests to narrow this down a bit. > > > > > > I did a bit more looking at this and I see that we setup a USB gadget > > device via the configfs as described in this doc [0]. The RCU stall > > occurs when we attempt to disable the gadget on shutdown by ... > > > > $ echo "" > /path/to/UDC > > > > Jon > > > > [0] https://docs.kernel.org/usb/gadget_configfs.html > > It's an RCU stall so it's probably a locking bug. The original code dropped the > port->port_lock, called usb_ep_disable() then took the lock again. There > must have been a reason to drop the lock although I haven't found it yet. > The new code moved the usb_ep_disable() under the lock. > > 1431 port->suspended = false; > 1432 spin_unlock(&port->port_lock); > 1433 spin_unlock_irqrestore(&serial_port_lock, flags); > 1434 > 1435 /* disable endpoints, aborting down any active I/O */ > 1436 usb_ep_disable(gser->out); > 1437 usb_ep_disable(gser->in); > 1438 > 1439 /* finally, free any unused/unusable I/O buffers */ > 1440 spin_lock_irqsave(&port->port_lock, flags); > 1441 if (port->port.count == 0) > 1442 kfifo_free(&port->port_write_buf); > > > It might help to try testing again with lockdep enabled. > To solve this problem, I plan to refer to the methods in gserial_suspend and gserial_resume functions and use spin lock to solve the competition between gs_read_complete and gserial_disconnect. The patch is as follows: Considering that in some extreme cases, when the unbind operation is being executed, gserial_disconnect has already cleared gser->ioport, triggering a gadget reconfiguration at this time and gs_read_complete gets called afterwards, which results in accessing null pointer, add a null pointer check to prevent this situation. Added a static spinlock to prevent gser->ioport from becoming null after the newly added check. Call trace: gs_read_complete+0x58/0x240 usb_gadget_giveback_request+0x40/0x160 dwc3_remove_requests+0x170/0x484 dwc3_ep0_out_start+0xb0/0x1d4 __dwc3_gadget_start+0x25c/0x720 kretprobe_trampoline.cfi_jt+0x0/0x8 kretprobe_trampoline.cfi_jt+0x0/0x8 udc_bind_to_driver+0x1d8/0x300 usb_gadget_probe_driver+0xa8/0x1dc gadget_dev_desc_UDC_store+0x13c/0x188 configfs_write_iter+0x160/0x1f4 vfs_write+0x2d0/0x40c ksys_write+0x7c/0xf0 __arm64_sys_write+0x20/0x30 invoke_syscall+0x60/0x150 el0_svc_common+0x8c/0xf8 do_el0_svc+0x28/0xa0 el0_svc+0x24/0x84 Fixes: c1dca562be8a ("usb gadget: split out serial core") Cc: stable@vger.kernel.org Suggested-by: Prashanth K Signed-off-by: Lianqin Hu drivers/usb/gadget/function/u_serial.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c index 0a8c05b2746b..6f2c9715e8df 100644 --- a/drivers/usb/gadget/function/u_serial.c +++ b/drivers/usb/gadget/function/u_serial.c @@ -456,13 +456,24 @@ static void gs_rx_push(struct work_struct *work) static void gs_read_complete(struct usb_ep *ep, struct usb_request *req) { - struct gs_port *port = ep->driver_data; + struct gs_port *port; + unsigned long flags; + + spin_lock_irqsave(&serial_port_lock, flags); + port = ep->driver_data; + + if (!port) { + spin_unlock_irqrestore(&serial_port_lock, flags); + return; + } - /* Queue all received data until the tty layer is ready for it. */ spin_lock(&port->port_lock); + spin_unlock(&serial_port_lock); + + /* Queue all received data until the tty layer is ready for it. */ list_add_tail(&req->list, &port->read_queue); schedule_delayed_work(&port->push, 0); - spin_unlock(&port->port_lock); + spin_unlock_irqrestore(&port->port_lock, flags); } static void gs_write_complete(struct usb_ep *ep, struct usb_request *req)