]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/char_dev.c
Remove executable permission for dma.c
[linux-2.6-omap-h63xx.git] / fs / char_dev.c
index 262fa10e213d571c4d14e1c6b08a3c5861e55e03..38f71222a552e46e58e0b801e91063d714a134fb 100644 (file)
@@ -120,7 +120,7 @@ __register_chrdev_region(unsigned int major, unsigned int baseminor,
        cd->major = major;
        cd->baseminor = baseminor;
        cd->minorct = minorct;
-       strncpy(cd->name,name, 64);
+       strlcpy(cd->name, name, sizeof(cd->name));
 
        i = major_to_index(major);
 
@@ -386,15 +386,22 @@ static int chrdev_open(struct inode *inode, struct file *filp)
        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;
 }