lkml.org 
[lkml]   [2023]   [Jul]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH net] net: ipa: only reset hashed tables when supported
On Mon, Jul 24, 2023 at 05:41:06PM -0500, Alex Elder wrote:
> Last year, the code that manages GSI channel transactions switched
> from using spinlock-protected linked lists to using indexes into the
> ring buffer used for a channel. Recently, Google reported seeing
> transaction reference count underflows occasionally during shutdown.
>
> Doug Anderson found a way to reproduce the issue reliably, and
> bisected the issue to the commit that eliminated the linked lists
> and the lock. The root cause was ultimately determined to be
> related to unused transactions being committed as part of the modem
> shutdown cleanup activity. Unused transactions are not normally
> expected (except in error cases).
>
> The modem uses some ranges of IPA-resident memory, and whenever it
> shuts down we zero those ranges. In ipa_filter_reset_table() a
> transaction is allocated to zero modem filter table entries. If
> hashing is not supported, hashed table memory should not be zeroed.
> But currently nothing prevents that, and the result is an unused
> transaction. Something similar occurs when we zero routing table
> entries for the modem.
>
> By preventing any attempt to clear hashed tables when hashing is not
> supported, the reference count underflow is avoided in this case.
>
> Note that there likely remains an issue with properly freeing unused
> transactions (if they occur due to errors). This patch addresses
> only the underflows that Google originally reported.
>
> Fixes: d338ae28d8a8 ("net: ipa: kill all other transaction lists")
> Cc: <stable@vger.kernel.org> # 6.1.x
> Tested-by: Douglas Anderson <dianders@chromium.org>
> Signed-off-by: Alex Elder <elder@linaro.org>
> ---
> drivers/net/ipa/ipa_table.c | 26 ++++++++++++++------------
> 1 file changed, 14 insertions(+), 12 deletions(-)

You sent 2 different versions of this patch? Which one is for what
tree? Is this in Linus's tree already? If so, what's the git id?

confused,

greg k-h

\
 
 \ /
  Last update: 2023-07-25 09:10    [W:0.107 / U:0.156 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site