Re: [PATCH net] net: ipa: only reset hashed tables when supported

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxx>    # 6.1.x
> Tested-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
> Signed-off-by: Alex Elder <elder@xxxxxxxxxx>
> ---
>  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



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux