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