usb: gadget: webcam: Make g_webcam loadable again
[platform/kernel/linux-starfive.git] / fs / namei.c
index 567ee54..94565bd 100644 (file)
@@ -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)
@@ -249,7 +249,7 @@ getname_kernel(const char * filename)
        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;
@@ -261,9 +261,10 @@ void putname(struct filename *name)
        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) {