From: Yi Sun <yi.sun@intel.com>
To: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Cc: <dave.jiang@intel.com>, <dmaengine@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <xueshuai@linux.alibaba.com>,
<gordon.jin@intel.com>
Subject: Re: [PATCH 2/2] dmaengine: idxd: Fix refcount underflow on module unload
Date: Fri, 30 May 2025 11:06:44 +0800 [thread overview]
Message-ID: <aDkgxCsCtsEugTdI@ysun46-mobl.ccr.corp.intel.com> (raw)
In-Reply-To: <87msav9wm6.fsf@intel.com>
On 29.05.2025 10:04, Vinicius Costa Gomes wrote:
>Yi Sun <yi.sun@intel.com> writes:
>
>> A recent refactor introduced a misplaced put_device() call, resulting in
>> reference count underflow when the module is unloaded.
>>
>> Expand the idxd_cleanup() function to handle proper cleanup, and remove
>> idxd_cleanup_internals() as it was not part of the driver unload path.
>>
>
>'idxd_cleanup_internals()' frees a bunch of stuff. I would expect an
>explanation of when those things are being free'd now that removed that
>call.
>
I believe the call to idxd_unregister_devices(), which is invoked at the
very beginning of idxd_remove(), already takes care of the necessary
put_device() through the following call path:
idxd_unregister_devices() -> device_unregister() -> put_device()
Therefore, there's no need to add additional put_device() calls for idxd
groups, engines, or workqueues. While the commit message for a409e919ca3
states: "Note, this also fixes the missing put_device() for idxd groups,
engines, and wqs."
it appears that no such omission actually existed, this part of the flow
was already correctly handled.
Moreover, this refcount underflow issue appears to be a a clear
regression. Prior to this commit, idxd_cleanup_internals() was not part of
the driver unload path. The commit did not provide a strong justification
for calling idxd_cleanup_internals() within idxd_cleanup().
For reference, the both two related bugs produce nearly identical call
traces, and I think both are blocking issues.
Thanks
--Sun, Yi
next prev parent reply other threads:[~2025-05-30 3:06 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-29 15:34 [PATCH 1/2] dmaengine: idxd: Remove improper idxd_free Yi Sun
2025-05-29 15:34 ` [PATCH 2/2] dmaengine: idxd: Fix refcount underflow on module unload Yi Sun
2025-05-29 17:04 ` Vinicius Costa Gomes
2025-05-30 3:06 ` Yi Sun [this message]
2025-05-30 5:39 ` Shuai Xue
2025-05-30 5:58 ` Yi Sun
2025-05-29 16:56 ` [PATCH 1/2] dmaengine: idxd: Remove improper idxd_free Vinicius Costa Gomes
2025-05-30 0:24 ` Yi Sun
2025-05-30 1:07 ` Vinicius Costa Gomes
2025-05-30 1:42 ` Yi Sun
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aDkgxCsCtsEugTdI@ysun46-mobl.ccr.corp.intel.com \
--to=yi.sun@intel.com \
--cc=dave.jiang@intel.com \
--cc=dmaengine@vger.kernel.org \
--cc=gordon.jin@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=vinicius.gomes@intel.com \
--cc=xueshuai@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.