Re: [PATCH v1] net: stmmac: Free rx_skbufs before realloc

From: Giuseppe CAVALLARO
Date: Wed Nov 25 2015 - 10:13:52 EST


Hello

On 11/24/2015 7:09 PM, David Miller wrote:
From: Shunqian Zheng <zhengsq@xxxxxxxxxxxxxx>
Date: Sun, 22 Nov 2015 16:44:18 +0800

From: ZhengShunQian <zhengsq@xxxxxxxxxxxxxx>

The init_dma_desc_rings() may realloc the rx_skbuff[] when
suspend and resume. This patch free the rx_skbuff[] before
reallocing memory.

Signed-off-by: ZhengShunQian <zhengsq@xxxxxxxxxxxxxx>

This isn't really the right way to fix this.

I see two reasonable approaches:

1) suspend liberates the RX ring, although this approach is less
desirable

2) resume doesn't try to allocate already populated RX ring
entries

Freeing the whole RX ring just to allocate it again immediately
makes no sense at all and is wasteful work.

This is a bug in this driver version that, to be honest, we fixed with
the first approach on STi kernel.
The patch just called the dma_free_rx_skbufs(priv) in the suspend.
I can give you this patch that is tested on my side too.
But! I do think we should move on second approach.
Indeed, also on ST platforms, when we play with suspend states
the DDR although in self-refresh the data are not lost at all.
No reason to free and reallocate all in suspend/resume.
I can test that and then provide another patch to this mailing list
asap.

Let me know.
peppe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/