Thread (43 messages) 43 messages, 6 authors, 2016-03-01

Re: fs: NULL deref in atime_needs_update

From: Dmitry Vyukov <dvyukov@google.com>
Date: 2016-02-29 18:19:52
Also in: lkml

On Mon, Feb 29, 2016 at 5:19 PM, Al Viro [off-list ref] wrote:
On Mon, Feb 29, 2016 at 04:54:54PM +0100, Dmitry Vyukov wrote:
quoted
Regardless of whether reordering is wrong or not, do we see how it can
fix the WARNINGs/oopses? Because it does seem to. I've tried to revert
just this part:

-               *inode = d_backing_inode(dentry);
                negative = d_is_negative(dentry);
+               *inode = d_backing_inode(dentry);

And got:

[  976.609688] WARNING: CPU: 0 PID: 12126 at fs/namei.c:1587
lookup_fast+0x3fa/0x450()
[  976.626768] WARNING: CPU: 0 PID: 12126 at fs/namei.c:3123
path_openat+0x12bc/0x1520()

in 15 minutes.
dentry going from negative to positive                  lookup_fast()
                                                        fetch NULL ->d_inode
store non-NULL ->d_inode
store new ->d_flags
                                                        fetch new ->d_flags
                                                        check ->d_seq
bump ->d_seq by 2

Change the order of fetches and you'll get rid of that scenario.
quoted
In particular, applying this on top the previous patch will be
inconclusive, because I already don't see the warnings.
Apply it with that reordering reversed, please.

OK, just wanted to make sure that we keep track of the situation.
Restarted testing with combined patch. Here is it just in case:
https://gist.githubusercontent.com/dvyukov/67fe363d5ce2e2b06c71/raw/4d1b6c23f8dff7e0f8e2e3cab7e50208fddb0570/gistfile1.txt
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help