mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-09-21 03:43:03 +00:00
fs: take_dentry_name_snapshot: avoid kfree under spinlock
Change-Id: Ib4eb26611ff808b380ec9f2efb1e090dd0f756e6 Signed-off-by: Corinna Vinschen <xda@vinschen.de>
This commit is contained in:
parent
c0860b5272
commit
b7f6cb2f76
|
@ -243,18 +243,19 @@ void take_dentry_name_snapshot(struct name_snapshot *name, struct dentry *dentry
|
|||
spin_lock(&dentry->d_lock);
|
||||
if (unlikely(dname_external(dentry))) {
|
||||
u32 len;
|
||||
char *p;
|
||||
char *p = NULL;
|
||||
|
||||
for (;;) {
|
||||
len = dentry->d_name.len;
|
||||
spin_unlock(&dentry->d_lock);
|
||||
|
||||
if (p)
|
||||
kfree(p);
|
||||
p = kmalloc(len + 1, GFP_KERNEL | __GFP_NOFAIL);
|
||||
|
||||
spin_lock(&dentry->d_lock);
|
||||
if (dentry->d_name.len <= len)
|
||||
break;
|
||||
kfree(p);
|
||||
}
|
||||
memcpy(p, dentry->d_name.name, dentry->d_name.len + 1);
|
||||
spin_unlock(&dentry->d_lock);
|
||||
|
|
Loading…
Reference in a new issue