Use a single goto label for chrdev_put + return error cases.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
        cdev_put(new);
        if (ret)
                return ret;
+
+       ret = -ENXIO;
        filp->f_op = fops_get(p->ops);
-       if (!filp->f_op) {
-               cdev_put(p);
-               return -ENXIO;
-       }
-       if (filp->f_op->open)
+       if (!filp->f_op)
+               goto out_cdev_put;
+
+       if (filp->f_op->open) {
                ret = filp->f_op->open(inode,filp);
-       if (ret)
-               cdev_put(p);
+               if (ret)
+                       goto out_cdev_put;
+       }
+
+       return 0;
+
+ out_cdev_put:
+       cdev_put(p);
        return ret;
 }