On Fri, Sep 12, 2014 at 12:43:22PM -0400, Dan Streetman wrote: > On Fri, Sep 12, 2014 at 12:59 AM, Minchan Kim <minchan@xxxxxxxxxx> wrote: > > On Thu, Sep 11, 2014 at 04:53:52PM -0400, Dan Streetman wrote: > >> When zsmalloc creates a new zspage, it initializes each object it contains > >> with a link to the next object, so that the zspage has a singly-linked list > >> of its free objects. However, the logic that sets up the links is wrong, > >> and in the case of objects that are precisely aligned with the page boundries > >> (e.g. a zspage with objects that are 1/2 PAGE_SIZE) the first object on the > >> next page is skipped, due to incrementing the offset twice. The logic can be > >> simplified, as it doesn't need to calculate how many objects can fit on the > >> current page; simply checking the offset for each object is enough. > > > > If objects are precisely aligned with the page boundary, pages_per_zspage > > should be 1 so there is no next page. > > ah, ok. I wonder if it should be changed anyway so it doesn't rely on > that detail, in case that's ever changed in the future. It's not > obvious the existing logic relies on that for correct operation. And > this simplifies the logic too. Correct description and resend if you want. -- Kind regards, Minchan Kim -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>