Messages in this thread | | | From | Kairui Song <> | Date | Mon, 20 Nov 2023 19:14:59 +0800 | Subject | Re: [PATCH 01/24] mm/swap: fix a potential undefined behavior issue |
| |
Chris Li <chrisl@kernel.org> 于2023年11月20日周一 11:36写道: > > Hi Kairui, > > On Sun, Nov 19, 2023 at 12:55 PM Matthew Wilcox <willy@infradead.org> wrote: > > > > On Mon, Nov 20, 2023 at 03:47:17AM +0800, Kairui Song wrote: > > > From: Kairui Song <kasong@tencent.com> > > > > > > When folio is NULL, taking the address of its struct member is an > > > undefined behavior, the UB is caused by applying -> operator > > I think dereferencing the NULL pointer is undefined behavior. There is > no dereferencing here. It is just pointer arithmetic of NULL pointers, > which is adding offset of page to the NULL pointer, you got NULL. > > > > won't lead to a real issue, still better to fix it, also makes the > > > code less error-prone, when folio is NULL, page is also NULL, > > > instead of a meanless offset value. > > I consider your reasoning is invalid. NULL pointer arithmetic should > be legal. This patch is not needed. > > Chris
Hi, Chris and Matthew.
Thanks for the comments.
Right, it's just a language syntax level thing, since "->" have a higher priority, so in the syntax level it is doing a member access first, then take the address. By C definition member access should not happen if the object is invalid (NULL). Only a hypothesis problem on paper...
This is indeed not needed since in reality it's just pointer arithmetic. I'm OK dropping this.
| |