Chris Li <chrisl@xxxxxxxxxx> 于2023年11月20日周一 11:36写道: > > Hi Kairui, > > On Sun, Nov 19, 2023 at 12:55 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > > > On Mon, Nov 20, 2023 at 03:47:17AM +0800, Kairui Song wrote: > > > From: Kairui Song <kasong@xxxxxxxxxxx> > > > > > > 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.