diff options
Diffstat (limited to 'fs/devfs-core.c')
-rw-r--r-- | fs/devfs-core.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/fs/devfs-core.c b/fs/devfs-core.c index c7187e3c01..87d4591d99 100644 --- a/fs/devfs-core.c +++ b/fs/devfs-core.c @@ -175,8 +175,15 @@ int cdev_find_free_index(const char *basename) int cdev_open(struct cdev *cdev, unsigned long flags) { - if (cdev->ops->open) - return cdev->ops->open(cdev, flags); + int ret; + + if (cdev->ops->open) { + ret = cdev->ops->open(cdev, flags); + if (ret) + return ret; + } + + cdev->open++; return 0; } @@ -221,6 +228,8 @@ void cdev_close(struct cdev *cdev) { if (cdev->ops->close) cdev->ops->close(cdev); + + cdev->open--; } ssize_t cdev_read(struct cdev *cdev, void *buf, size_t count, loff_t offset, ulong flags) |