diff --git a/fs/char_dev.c b/fs/char_dev.c
index 00dfe17871ac2fa4c98f23db35010d89967de96d..c5e6eff5a38164e2dda4b20e1918c287233be1b3 100644
--- a/fs/char_dev.c
+++ b/fs/char_dev.c
@@ -352,7 +352,7 @@ static struct kobject *cdev_get(struct cdev *p)
 
 	if (owner && !try_module_get(owner))
 		return NULL;
-	kobj = kobject_get(&p->kobj);
+	kobj = kobject_get_unless_zero(&p->kobj);
 	if (!kobj)
 		module_put(owner);
 	return kobj;