dcache: trivial comment fix
PATCH 1/1 dcache: trivial comment fix
From: J. Bruce Fields <[email protected]>
As it stands this comment is confusing, and not quite grammatical.
--- fs/dcache.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
fs/dcache.c +2 -2
@@ -1514,8 +1514,8 @@ static void switch_names(struct dentry *dentry, struct dentry *target)* This forceful removal will result in ugly /proc output if * somebody holds a file open that got deleted due to a rename. * We could be nicer about the deleted file, and let it show -* up under the name it got deleted rather than the name that -* deleted it. +* up under the name it had before it was deleted rather than +* the original name of the file that was moved on top of it. */ /*
Signature · 1 line
1.5.3.4.208.gc990
PATCH 1/1 dcache: don't expose uninitialized memory in /proc/<pid>/fd/<fd>
From: J. Bruce Fields <[email protected]>
Well, it's not especially important that target->d_iname get the contents of dentry->d_iname, but it's important that it get initialized with *something*, otherwise we're just exposing some random piece of memory to anyone who reads the link at /proc/<pid>/fd/<fd> for the deleted file, when it's still held open by someone.
--- fs/dcache.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
(Am I missing something? I've also run a test program that copies a short (<36 character) name ontop of a long (>=36 character) name and see that the first time I run it, without this patch, I get unpredicatable results out of /proc/<pid>/fd/<fd>.)
fs/dcache.c +2 -0
@@ -1483,6 +1483,8 @@ static void switch_names(struct dentry *dentry, struct dentry *target)* dentry:internal, target:external. Steal target's * storage and make target internal. */ +memcpy (target->d_iname, dentry->d_name.name, + dentry->d_name.len +1 ); dentry->d_name.name = target->d_name.name; target->d_name.name = target->d_iname; }
Signature · 1 line
1.5.3.4.208.gc990
Re: [PATCH] dcache: don't expose uninitialized memory in /proc/<pid>/fd/<fd>
Quoted 8 lines · On Tue, 16 Oct 2007 15:35:57 -0400 "J. Bruce Fields" <[email protected]>…
From: J. Bruce Fields <[email protected]>
Well, it's not especially important that
target->d_inameget the contents ofdentry->d_iname, but it's important that it get initialized with *something*, otherwise we're just exposing some random piece of memory to anyone who reads the link at /proc/<pid>/fd/<fd> for the deleted file, when it's still held open by someone.
hm, that was tricky.
Quoted 14 lines
--- fs/dcache.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)(Am I missing something? I've also run a test program that copies a short (<36 character) name ontop of a long (>=36 character) name and see that the first time I run it, without this patch, I get unpredicatable results out of /proc/<pid>/fd/<fd>.)
fs/dcache.c +0
-0
fs/dcache.c static void switch_names(struct dentry *dentry, struct dentry *target) · line 1490
Quoted 8 lines
fs/dcache.c +2
-0@@ -1483,6 +1483,8 @@ static void switch_names(struct dentry *dentry, struct dentry *target)* dentry:internal, target:external. Steal target's * storage and make target internal. */ +memcpy (target->d_iname, dentry->d_name.name, + dentry->d_name.len +1 ); dentry->d_name.name = target->d_name.name; target->d_name.name = target->d_iname; }
Or we could just stick a \0 in there.
Or perhaps we should set it to "(deleted file)"?
Re: [PATCH] dcache: don't expose uninitialized memory in /proc/<pid>/fd/<fd>
Sorry for the delayed response:
Quoted 23 lines · Andrew Morton
Quoted 8 lines · On Tue, 16 Oct 2007 15:35:57 -0400 "J. Bruce Fields" <[email protected]>…
From: J. Bruce Fields <[email protected]>
Well, it's not especially important that
target->d_inameget the contents ofdentry->d_iname, but it's important that it get initialized with *something*, otherwise we're just exposing some random piece of memory to anyone who reads the link at /proc/<pid>/fd/<fd> for the deleted file, when it's still held open by someone.hm, that was tricky.
Quoted 9 lines
--- fs/dcache.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)(Am I missing something? I've also run a test program that copies a short (<36 character) name ontop of a long (>=36 character) name and see that the first time I run it, without this patch, I get unpredicatable results out of /proc/<pid>/fd/<fd>.)
Quoted 15 lines
fs/dcache.c static void switch_names(struct dentry *dentry, struct dentry *target) · line 1490
Quoted 13 lines
fs/dcache.c +2
-0@@ -1483,6 +1483,8 @@ static void switch_names(struct dentry *dentry, struct dentry *target)* dentry:internal, target:external. Steal target's * storage and make target internal. */ +memcpy (target->d_iname, dentry->d_name.name, + dentry->d_name.len +1 ); dentry->d_name.name = target->d_name.name; target->d_name.name = target->d_iname; }Or we could just stick a \0 in there.
The memcpy() makes the behavior agree with the code comments, and with what the kernel normally otherwise does. But, yeah, just making it a null string would probably be reasonable too.
Quoted 1 line
Or perhaps we should set it to "(deleted file)"?
Looks like __d_path already adds a (deleted) for us, so that'de be redundant.
--b.