Commit dc711ca3 authored by Al Viro's avatar Al Viro

fix switch_names() breakage in short-to-short case

We want ->name.len to match the resulting name on *both*
source and target
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 7df5fa06
...@@ -1616,8 +1616,11 @@ static void switch_names(struct dentry *dentry, struct dentry *target) ...@@ -1616,8 +1616,11 @@ static void switch_names(struct dentry *dentry, struct dentry *target)
*/ */
memcpy(dentry->d_iname, target->d_name.name, memcpy(dentry->d_iname, target->d_name.name,
target->d_name.len + 1); target->d_name.len + 1);
dentry->d_name.len = target->d_name.len;
return;
} }
} }
do_switch(dentry->d_name.len, target->d_name.len);
} }
/* /*
...@@ -1677,7 +1680,6 @@ static void d_move_locked(struct dentry * dentry, struct dentry * target) ...@@ -1677,7 +1680,6 @@ static void d_move_locked(struct dentry * dentry, struct dentry * target)
/* Switch the names.. */ /* Switch the names.. */
switch_names(dentry, target); switch_names(dentry, target);
do_switch(dentry->d_name.len, target->d_name.len);
do_switch(dentry->d_name.hash, target->d_name.hash); do_switch(dentry->d_name.hash, target->d_name.hash);
/* ... and switch the parents */ /* ... and switch the parents */
...@@ -1787,7 +1789,6 @@ static void __d_materialise_dentry(struct dentry *dentry, struct dentry *anon) ...@@ -1787,7 +1789,6 @@ static void __d_materialise_dentry(struct dentry *dentry, struct dentry *anon)
struct dentry *dparent, *aparent; struct dentry *dparent, *aparent;
switch_names(dentry, anon); switch_names(dentry, anon);
do_switch(dentry->d_name.len, anon->d_name.len);
do_switch(dentry->d_name.hash, anon->d_name.hash); do_switch(dentry->d_name.hash, anon->d_name.hash);
dparent = dentry->d_parent; dparent = dentry->d_parent;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment