From owner-freebsd-bugs@freebsd.org Tue Mar 3 13:40:36 2020 Return-Path: Delivered-To: freebsd-bugs@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A9F1625005A for ; Tue, 3 Mar 2020 13:40:36 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from mailman.nyi.freebsd.org (mailman.nyi.freebsd.org [IPv6:2610:1c1:1:606c::50:13]) by mx1.freebsd.org (Postfix) with ESMTP id 48Wynb5kf0z4GCy for ; Tue, 3 Mar 2020 13:40:35 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: by mailman.nyi.freebsd.org (Postfix) id BF9E6250058; Tue, 3 Mar 2020 13:40:35 +0000 (UTC) Delivered-To: bugs@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BF151250057 for ; Tue, 3 Mar 2020 13:40:35 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 48Wynb41k5z4GCq for ; Tue, 3 Mar 2020 13:40:35 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2610:1c1:1:606c::50:1d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 73B8E5E99 for ; Tue, 3 Mar 2020 13:40:35 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org ([127.0.1.5]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id 023DeZv3010468 for ; Tue, 3 Mar 2020 13:40:35 GMT (envelope-from bugzilla-noreply@freebsd.org) Received: (from www@localhost) by kenobi.freebsd.org (8.15.2/8.15.2/Submit) id 023DeZUQ010467 for bugs@FreeBSD.org; Tue, 3 Mar 2020 13:40:35 GMT (envelope-from bugzilla-noreply@freebsd.org) X-Authentication-Warning: kenobi.freebsd.org: www set sender to bugzilla-noreply@freebsd.org using -f From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 244572] Resources leaked by linux_kpi when resetting RDMA device Date: Tue, 03 Mar 2020 13:40:34 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Some People X-Bugzilla-Who: aboyer@pensando.io X-Bugzilla-Status: New X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: bugs@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Mar 2020 13:40:36 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D244572 Bug ID: 244572 Summary: Resources leaked by linux_kpi when resetting RDMA device Product: Base System Version: CURRENT Hardware: Any OS: Any Status: New Severity: Affects Some People Priority: --- Component: kern Assignee: bugs@FreeBSD.org Reporter: aboyer@pensando.io Created attachment 212118 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D212118&action= =3Dedit Proposed patch to linux_file_close() If an RDMA driver resets itself by posting a NETDEV_UNREGISTER event while a userspace process has the device open, cleanup will fail and unregister will hang forever. (This is admittedly an obscure corner case.) This is what should happen when the process shuts down: #2 0xffffffff80e9a4e6 at ib_destroy_qp+0xd6 #3 0xffffffff80e98ab0 at ib_uverbs_cleanup_ucontext+0x1e0 #4 0xffffffff80e9879c at ib_uverbs_close+0x6c #5 0xffffffff80e45cda at linux_file_close+0x18a The issue is that the uverbs file will be partially destroyed by the unregi= ster process, clearing the uverbs file's fops structure. Then, when the userspace process shuts down, the uverbs file will be closed, but its ->release() function (ib_uverbs_close() in this case) will not be called. This leaks whatever RDMA data structures were in use by the process. To fix the issue, change linux_file_close() to use the file pointer's embed= ded f_ops, rather than pulling them from the cdev. This allows cleanup to run e= ven after the cdev has been destroyed. The attached patch has been tested on FreeBSD 11.3-RELEASE-p5 and 12.1-RELEASE-p1. --=20 You are receiving this mail because: You are the assignee for the bug.=