Loading drivers/s390/char/fs3270.c +16 −7 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/interrupt.h> #include <linux/list.h> #include <linux/types.h> #include <linux/smp_lock.h> #include <asm/ccwdev.h> #include <asm/cio.h> Loading Loading @@ -421,6 +422,7 @@ fs3270_open(struct inode *inode, struct file *filp) if (imajor(filp->f_path.dentry->d_inode) != IBM_FS3270_MAJOR) return -ENODEV; lock_kernel(); minor = iminor(filp->f_path.dentry->d_inode); /* Check for minor 0 multiplexer. */ if (minor == 0) { Loading @@ -429,7 +431,8 @@ fs3270_open(struct inode *inode, struct file *filp) tty = get_current_tty(); if (!tty || tty->driver->major != IBM_TTY3270_MAJOR) { mutex_unlock(&tty_mutex); return -ENODEV; rc = -ENODEV; goto out; } minor = tty->index + RAW3270_FIRSTMINOR; mutex_unlock(&tty_mutex); Loading @@ -438,19 +441,22 @@ fs3270_open(struct inode *inode, struct file *filp) fp = (struct fs3270 *) raw3270_find_view(&fs3270_fn, minor); if (!IS_ERR(fp)) { raw3270_put_view(&fp->view); return -EBUSY; rc = -EBUSY; goto out; } /* Allocate fullscreen view structure. */ fp = fs3270_alloc_view(); if (IS_ERR(fp)) return PTR_ERR(fp); if (IS_ERR(fp)) { rc = PTR_ERR(fp); goto out; } init_waitqueue_head(&fp->wait); fp->fs_pid = get_pid(task_pid(current)); rc = raw3270_add_view(&fp->view, &fs3270_fn, minor); if (rc) { fs3270_free_view(&fp->view); return rc; goto out; } /* Allocate idal-buffer. */ Loading @@ -458,7 +464,8 @@ fs3270_open(struct inode *inode, struct file *filp) if (IS_ERR(ib)) { raw3270_put_view(&fp->view); raw3270_del_view(&fp->view); return PTR_ERR(fp); rc = PTR_ERR(fp); goto out; } fp->rdbuf = ib; Loading @@ -466,9 +473,11 @@ fs3270_open(struct inode *inode, struct file *filp) if (rc) { raw3270_put_view(&fp->view); raw3270_del_view(&fp->view); return rc; goto out; } filp->private_data = fp; out: unlock_kernel(); return 0; } Loading drivers/s390/char/tape_char.c +9 −3 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/types.h> #include <linux/proc_fs.h> #include <linux/mtio.h> #include <linux/smp_lock.h> #include <asm/uaccess.h> Loading Loading @@ -289,21 +290,26 @@ tapechar_open (struct inode *inode, struct file *filp) if (imajor(filp->f_path.dentry->d_inode) != tapechar_major) return -ENODEV; lock_kernel(); minor = iminor(filp->f_path.dentry->d_inode); device = tape_get_device(minor / TAPE_MINORS_PER_DEV); if (IS_ERR(device)) { DBF_EVENT(3, "TCHAR:open: tape_get_device() failed\n"); return PTR_ERR(device); rc = PTR_ERR(device); goto out; } rc = tape_open(device); if (rc == 0) { filp->private_data = device; return nonseekable_open(inode, filp); rc = nonseekable_open(inode, filp); } else tape_put_device(device); out: unlock_kernel(); return rc; } Loading drivers/s390/char/vmlogrdr.c +7 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <linux/kmod.h> #include <linux/cdev.h> #include <linux/device.h> #include <linux/smp_lock.h> #include <linux/string.h> Loading Loading @@ -319,9 +320,11 @@ static int vmlogrdr_open (struct inode *inode, struct file *filp) return -ENOSYS; /* Besure this device hasn't already been opened */ lock_kernel(); spin_lock_bh(&logptr->priv_lock); if (logptr->dev_in_use) { spin_unlock_bh(&logptr->priv_lock); unlock_kernel(); return -EBUSY; } logptr->dev_in_use = 1; Loading Loading @@ -365,7 +368,9 @@ static int vmlogrdr_open (struct inode *inode, struct file *filp) || (logptr->iucv_path_severed)); if (logptr->iucv_path_severed) goto out_record; return nonseekable_open(inode, filp); ret = nonseekable_open(inode, filp); unlock_kernel(); return ret; out_record: if (logptr->autorecording) Loading @@ -375,6 +380,7 @@ static int vmlogrdr_open (struct inode *inode, struct file *filp) logptr->path = NULL; out_dev: logptr->dev_in_use = 0; unlock_kernel(); return -EIO; } Loading drivers/s390/char/vmur.c +9 −3 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ */ #include <linux/cdev.h> #include <linux/smp_lock.h> #include <asm/uaccess.h> #include <asm/cio.h> Loading Loading @@ -668,7 +669,7 @@ static int ur_open(struct inode *inode, struct file *file) if (accmode == O_RDWR) return -EACCES; lock_kernel(); /* * We treat the minor number as the devno of the ur device * to find in the driver tree. Loading @@ -676,8 +677,10 @@ static int ur_open(struct inode *inode, struct file *file) devno = MINOR(file->f_dentry->d_inode->i_rdev); urd = urdev_get_from_devno(devno); if (!urd) return -ENXIO; if (!urd) { rc = -ENXIO; goto out; } spin_lock(&urd->open_lock); while (urd->open_flag) { Loading Loading @@ -720,6 +723,7 @@ static int ur_open(struct inode *inode, struct file *file) goto fail_urfile_free; urf->file_reclen = rc; file->private_data = urf; unlock_kernel(); return 0; fail_urfile_free: Loading @@ -730,6 +734,8 @@ static int ur_open(struct inode *inode, struct file *file) spin_unlock(&urd->open_lock); fail_put: urdev_put(urd); out: unlock_kernel(); return rc; } Loading Loading
drivers/s390/char/fs3270.c +16 −7 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/interrupt.h> #include <linux/list.h> #include <linux/types.h> #include <linux/smp_lock.h> #include <asm/ccwdev.h> #include <asm/cio.h> Loading Loading @@ -421,6 +422,7 @@ fs3270_open(struct inode *inode, struct file *filp) if (imajor(filp->f_path.dentry->d_inode) != IBM_FS3270_MAJOR) return -ENODEV; lock_kernel(); minor = iminor(filp->f_path.dentry->d_inode); /* Check for minor 0 multiplexer. */ if (minor == 0) { Loading @@ -429,7 +431,8 @@ fs3270_open(struct inode *inode, struct file *filp) tty = get_current_tty(); if (!tty || tty->driver->major != IBM_TTY3270_MAJOR) { mutex_unlock(&tty_mutex); return -ENODEV; rc = -ENODEV; goto out; } minor = tty->index + RAW3270_FIRSTMINOR; mutex_unlock(&tty_mutex); Loading @@ -438,19 +441,22 @@ fs3270_open(struct inode *inode, struct file *filp) fp = (struct fs3270 *) raw3270_find_view(&fs3270_fn, minor); if (!IS_ERR(fp)) { raw3270_put_view(&fp->view); return -EBUSY; rc = -EBUSY; goto out; } /* Allocate fullscreen view structure. */ fp = fs3270_alloc_view(); if (IS_ERR(fp)) return PTR_ERR(fp); if (IS_ERR(fp)) { rc = PTR_ERR(fp); goto out; } init_waitqueue_head(&fp->wait); fp->fs_pid = get_pid(task_pid(current)); rc = raw3270_add_view(&fp->view, &fs3270_fn, minor); if (rc) { fs3270_free_view(&fp->view); return rc; goto out; } /* Allocate idal-buffer. */ Loading @@ -458,7 +464,8 @@ fs3270_open(struct inode *inode, struct file *filp) if (IS_ERR(ib)) { raw3270_put_view(&fp->view); raw3270_del_view(&fp->view); return PTR_ERR(fp); rc = PTR_ERR(fp); goto out; } fp->rdbuf = ib; Loading @@ -466,9 +473,11 @@ fs3270_open(struct inode *inode, struct file *filp) if (rc) { raw3270_put_view(&fp->view); raw3270_del_view(&fp->view); return rc; goto out; } filp->private_data = fp; out: unlock_kernel(); return 0; } Loading
drivers/s390/char/tape_char.c +9 −3 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/types.h> #include <linux/proc_fs.h> #include <linux/mtio.h> #include <linux/smp_lock.h> #include <asm/uaccess.h> Loading Loading @@ -289,21 +290,26 @@ tapechar_open (struct inode *inode, struct file *filp) if (imajor(filp->f_path.dentry->d_inode) != tapechar_major) return -ENODEV; lock_kernel(); minor = iminor(filp->f_path.dentry->d_inode); device = tape_get_device(minor / TAPE_MINORS_PER_DEV); if (IS_ERR(device)) { DBF_EVENT(3, "TCHAR:open: tape_get_device() failed\n"); return PTR_ERR(device); rc = PTR_ERR(device); goto out; } rc = tape_open(device); if (rc == 0) { filp->private_data = device; return nonseekable_open(inode, filp); rc = nonseekable_open(inode, filp); } else tape_put_device(device); out: unlock_kernel(); return rc; } Loading
drivers/s390/char/vmlogrdr.c +7 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <linux/kmod.h> #include <linux/cdev.h> #include <linux/device.h> #include <linux/smp_lock.h> #include <linux/string.h> Loading Loading @@ -319,9 +320,11 @@ static int vmlogrdr_open (struct inode *inode, struct file *filp) return -ENOSYS; /* Besure this device hasn't already been opened */ lock_kernel(); spin_lock_bh(&logptr->priv_lock); if (logptr->dev_in_use) { spin_unlock_bh(&logptr->priv_lock); unlock_kernel(); return -EBUSY; } logptr->dev_in_use = 1; Loading Loading @@ -365,7 +368,9 @@ static int vmlogrdr_open (struct inode *inode, struct file *filp) || (logptr->iucv_path_severed)); if (logptr->iucv_path_severed) goto out_record; return nonseekable_open(inode, filp); ret = nonseekable_open(inode, filp); unlock_kernel(); return ret; out_record: if (logptr->autorecording) Loading @@ -375,6 +380,7 @@ static int vmlogrdr_open (struct inode *inode, struct file *filp) logptr->path = NULL; out_dev: logptr->dev_in_use = 0; unlock_kernel(); return -EIO; } Loading
drivers/s390/char/vmur.c +9 −3 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ */ #include <linux/cdev.h> #include <linux/smp_lock.h> #include <asm/uaccess.h> #include <asm/cio.h> Loading Loading @@ -668,7 +669,7 @@ static int ur_open(struct inode *inode, struct file *file) if (accmode == O_RDWR) return -EACCES; lock_kernel(); /* * We treat the minor number as the devno of the ur device * to find in the driver tree. Loading @@ -676,8 +677,10 @@ static int ur_open(struct inode *inode, struct file *file) devno = MINOR(file->f_dentry->d_inode->i_rdev); urd = urdev_get_from_devno(devno); if (!urd) return -ENXIO; if (!urd) { rc = -ENXIO; goto out; } spin_lock(&urd->open_lock); while (urd->open_flag) { Loading Loading @@ -720,6 +723,7 @@ static int ur_open(struct inode *inode, struct file *file) goto fail_urfile_free; urf->file_reclen = rc; file->private_data = urf; unlock_kernel(); return 0; fail_urfile_free: Loading @@ -730,6 +734,8 @@ static int ur_open(struct inode *inode, struct file *file) spin_unlock(&urd->open_lock); fail_put: urdev_put(urd); out: unlock_kernel(); return rc; } Loading