On Fri, Sep 12, 2014 at 12:43:22PM -0400, Dan Streetman wrote: > On Fri, Sep 12, 2014 at 12:59 AM, Minchan Kim <minc...@kernel.org> 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 from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/