projects
/
platform
/
kernel
/
linux-starfive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
usb: gadget: webcam: Make g_webcam loadable again
[platform/kernel/linux-starfive.git]
/
fs
/
namei.c
diff --git
a/fs/namei.c
b/fs/namei.c
index
567ee54
..
94565bd
100644
(file)
--- a/
fs/namei.c
+++ b/
fs/namei.c
@@
-188,7
+188,7
@@
getname_flags(const char __user *filename, int flags, int *empty)
}
}
}
}
-
result->refcnt = 1
;
+
atomic_set(&result->refcnt, 1)
;
/* The empty path is special. */
if (unlikely(!len)) {
if (empty)
/* The empty path is special. */
if (unlikely(!len)) {
if (empty)
@@
-249,7
+249,7
@@
getname_kernel(const char * filename)
memcpy((char *)result->name, filename, len);
result->uptr = NULL;
result->aname = NULL;
memcpy((char *)result->name, filename, len);
result->uptr = NULL;
result->aname = NULL;
-
result->refcnt = 1
;
+
atomic_set(&result->refcnt, 1)
;
audit_getname(result);
return result;
audit_getname(result);
return result;
@@
-261,9
+261,10
@@
void putname(struct filename *name)
if (IS_ERR(name))
return;
if (IS_ERR(name))
return;
- BUG_ON(name->refcnt <= 0);
+ if (WARN_ON_ONCE(!atomic_read(&name->refcnt)))
+ return;
- if (
--name->refcnt > 0
)
+ if (
!atomic_dec_and_test(&name->refcnt)
)
return;
if (name->name != name->iname) {
return;
if (name->name != name->iname) {