Re: [RFC] [NET] [0/2] pskb_expand_head() bugfix
From: Hideo AOKI <hidden>
Date: 2008-03-26 20:47:47
Hello Herbert, Thank you for your quick response. Herbert Xu wrote:
On Tue, Mar 25, 2008 at 02:39:04PM -0400, Hideo AOKI wrote:quoted
Current pskb_expand_head() doesn't change truesize, while it reallocates memory. Then, if argument nhead or ntail aren't 0, caller must update truesize. We had this bug at audit_expand() in January and fixed it as commit 406a1d868001423c85a3165288e566e65f424fe6. However, some drivers and subsystems still use pskb_expand_head() without updating truesize.Drivers usually aren't supposed to change truesize so doing this would actually create bugs.
I understood your point. Since keeping correct truesize is important to network memory accounting, I want to fix network subsystem part at least. I think that it is inconvenient for caller functions to need updateing truesize by themselves. How about this change to avoid the inconvenience? - Current implementation is renamed to __pskb_expand_head(). - Drivers call __pskb_expand_head() instead of pskb_expand_head(). - New pskb_expand_head() updates truesize after calling __pskb_expand_head(). Or, should I simply add truesize calculation after pskb_expand_head() calls which change truesize?
quoted
In addition, there is another problem to update truesise. Since pskb_expand_head() aligns memory size before reallocation, caller functions may not update turesize correctly if they just add nhaad and ntail to turesize.That should be fixable by making sure that nhead + ntail is aligned.
I see. Regards, Hideo -- Hitachi Computer Products (America) Inc.