Linux-Fsdevel Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Vlastimil Babka <vbabka@suse.cz>
To: "Gabriel Krisman Bertazi" <krisman@collabora.com>,
"Matthew Wilcox" <willy@infradead.org>,
linux-fsdevel@vger.kernel.org,
fuse-devel <fuse-devel@lists.sourceforge.net>,
linux-mm <linux-mm@kvack.org>, miklos <mszeredi@redhat.com>,
"André Almeida" <andrealmeid@collabora.com>
Subject: Re: [fuse-devel] fuse: trying to steal weird page
Date: Wed, 6 May 2020 15:57:48 +0200 [thread overview]
Message-ID: <7087dfb7-6cb1-59fe-e758-a37d714802a0@suse.cz> (raw)
In-Reply-To: <87zhaoydeb.fsf@vostro.rath.org>
On 5/3/20 10:25 PM, Nikolaus Rath wrote:
> On May 03 2020, Gabriel Krisman Bertazi <krisman@collabora.com> wrote:
>> Matthew Wilcox <willy@infradead.org> writes:
>>
>>> On Sun, May 03, 2020 at 09:43:41AM +0100, Nikolaus Rath wrote:
>>>> Here's what I got:
>>>>
>>>> [ 221.277260] page:ffffec4bbd639880 refcount:1 mapcount:0 mapping:0000000000000000 index:0xd9
>>>> [ 221.277265] flags: 0x17ffffc0000097(locked|waiters|referenced|uptodate|lru)
>>>> [ 221.277269] raw: 0017ffffc0000097 ffffec4bbd62f048 ffffec4bbd619308 0000000000000000
>>>> [ 221.277271] raw: 00000000000000d9 0000000000000000 00000001ffffffff ffff9aec11beb000
>>>> [ 221.277272] page dumped because: fuse: trying to steal weird page
>>>> [ 221.277273] page->mem_cgroup:ffff9aec11beb000
>>>
>>> Great! Here's the condition:
>>>
>>> if (page_mapcount(page) ||
>>> page->mapping != NULL ||
>>> page_count(page) != 1 ||
>>> (page->flags & PAGE_FLAGS_CHECK_AT_PREP &
>>> ~(1 << PG_locked |
>>> 1 << PG_referenced |
>>> 1 << PG_uptodate |
>>> 1 << PG_lru |
>>> 1 << PG_active |
>>> 1 << PG_reclaim))) {
>>>
>>> mapcount is 0, mapping is NULL, refcount is 1, so that's all fine.
>>> flags has 'waiters' set, which is not in the allowed list. I don't
>>> know the internals of FUSE, so I don't know why that is.
>>>
>>
>> On the first message, Nikolaus sent the following line:
>>
>>>> [ 2333.009937] fuse: page=00000000dd1750e3 index=2022240 flags=17ffffc0000097, count=1,
>>>> mapcount=0, mapping=00000000125079ad
>>
>> It should be noted that on the second run, where we got the dump_page
>> log, it indeed had a null mapping, which is similar to what Nikolaus
>> asked on the previous thread he linked to, but looks like this wasn't
>> the case on at least some of the reproductions of the issue. On the
>> line above, the condition that triggered the warning was page->mapping
>> != NULL. I don't know what to do with this information, though.
>
> Indeed, that's curious. I've modified the patch slightly to print both
> the old and the new message to confirm. And indeed:
>
> [ 260.882873] fuse: trying to steal weird page
> [ 260.882879] fuse: page=00000000813e7570 index=2010048 flags=17ffffc0000097, count=1, mapcount=0, mapping=0000000094844a11
fuse_check_page() is using %p for these, so they are hashed (IIRC that means the
upper part is zeroed and the lower hashed)
> [ 260.882882] page:ffffe13431bcc000 refcount:1 mapcount:0 mapping:0000000000000000 index:0x1eabc0
__dump_page() in 5.6 uses %px so they are unmodified. Thus it's really a NULL
pointer.
For extra fun, __dump_page() in 5.7 will also print page pointer unmodified, but
mapping will become hashed too.
Yeah it would be nice if NULLish values were treated specially, as
0000000094844a11 instead of NULL is really misleading. __dump_page() is fine
thanks to the raw dump, but other places perhaps not.
next prev parent reply other threads:[~2020-05-06 13:57 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-02 19:09 Nikolaus Rath
2020-05-02 19:52 ` Nikolaus Rath
2020-05-03 3:26 ` Matthew Wilcox
2020-05-03 8:43 ` [fuse-devel] " Nikolaus Rath
2020-05-03 10:27 ` Matthew Wilcox
2020-05-03 18:28 ` Gabriel Krisman Bertazi
2020-05-03 20:06 ` Matthew Wilcox
2020-05-03 20:25 ` Nikolaus Rath
2020-05-06 13:57 ` Vlastimil Babka [this message]
2020-05-03 21:34 ` Hugh Dickins
2020-05-18 12:45 ` Miklos Szeredi
2020-05-18 14:48 ` Matthew Wilcox
2020-05-18 14:58 ` Miklos Szeredi
2020-05-18 15:26 ` Matthew Wilcox
-- strict thread matches above, loose matches on Subject: below --
2018-12-26 21:43 Nikolaus Rath
2019-01-07 8:28 ` [fuse-devel] " Miklos Szeredi
2019-01-07 21:05 ` Nikolaus Rath
2019-01-08 8:27 ` Miklos Szeredi
2019-01-08 10:35 ` Nikolaus Rath
2019-01-09 8:07 ` Miklos Szeredi
2019-01-11 15:39 ` Nikolaus Rath
2019-01-11 15:39 ` [fuse-devel] " Nikolaus Rath
2019-02-10 22:05 ` Nikolaus Rath
2019-02-12 14:57 ` Miklos Szeredi
2019-02-12 21:28 ` Nikolaus Rath
2019-02-25 21:41 ` Nikolaus Rath
2019-02-26 12:57 ` Miklos Szeredi
2019-02-26 13:30 ` Miklos Szeredi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7087dfb7-6cb1-59fe-e758-a37d714802a0@suse.cz \
--to=vbabka@suse.cz \
--cc=andrealmeid@collabora.com \
--cc=fuse-devel@lists.sourceforge.net \
--cc=krisman@collabora.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mszeredi@redhat.com \
--cc=willy@infradead.org \
--subject='Re: [fuse-devel] fuse: trying to steal weird page' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).