atomic_t refcount;
 };
 
-void kref_set(struct kref *kref, int num);
 void kref_init(struct kref *kref);
 void kref_get(struct kref *kref);
 int kref_put(struct kref *kref, void (*release) (struct kref *kref));
 
 #endif
        /* tgcred will be cleared in our caller bc CLONE_THREAD won't be set */
 
-       /* alloc_uid() incremented the userns refcount.  Just set it to 1 */
-       kref_set(&ns->kref, 1);
+       /* root_user holds a reference to ns, our reference can be dropped */
+       put_user_ns(ns);
 
        return 0;
 }
 
 #include <linux/module.h>
 #include <linux/slab.h>
 
-/**
- * kref_set - initialize object and set refcount to requested number.
- * @kref: object in question.
- * @num: initial reference counter
- */
-void kref_set(struct kref *kref, int num)
-{
-       atomic_set(&kref->refcount, num);
-       smp_mb();
-}
-
 /**
  * kref_init - initialize object.
  * @kref: object in question.
  */
 void kref_init(struct kref *kref)
 {
-       kref_set(kref, 1);
+       atomic_set(&kref->refcount, 1);
+       smp_mb();
 }
 
 /**
        return 0;
 }
 
-EXPORT_SYMBOL(kref_set);
 EXPORT_SYMBOL(kref_init);
 EXPORT_SYMBOL(kref_get);
 EXPORT_SYMBOL(kref_put);
 
                       iint->opencount);
                iint->opencount = 0;
        }
-       kref_set(&iint->refcount, 1);
+       kref_init(&iint->refcount);
        kmem_cache_free(iint_cache, iint);
 }
 
        iint->readcount = 0;
        iint->writecount = 0;
        iint->opencount = 0;
-       kref_set(&iint->refcount, 1);
+       kref_init(&iint->refcount);
 }
 
 static int __init ima_iintcache_init(void)