On Sat, 23 Jan 2016, Davidlohr Bueso wrote: > + if (unlikely(!mapping)) { > + int shmem_swizzled; > + > + /* > + * Page lock is required to identify which special case above > + * applies. If this is really a shmem page then the page lock > + * will prevent unexpected transitions. > + */ > + lock_page(page); > + shmem_swizzled = PageSwapCache(page); > unlock_page(page); > put_page(page); > + WARN_ON_ONCE(READ_ONCE(page->mapping));
You just did put_page(page). So dereferencing page is a nono. This needs to be flipped around. Thanks, tglx