diff options
Diffstat (limited to 'drivers/char/ppdev.c')
| -rw-r--r-- | drivers/char/ppdev.c | 16 | 
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c index f176dbaeb15..ae0b42b66e5 100644 --- a/drivers/char/ppdev.c +++ b/drivers/char/ppdev.c @@ -107,7 +107,7 @@ static inline void pp_enable_irq (struct pp_struct *pp)  static ssize_t pp_read (struct file * file, char __user * buf, size_t count,  			loff_t * ppos)  { -	unsigned int minor = iminor(file->f_path.dentry->d_inode); +	unsigned int minor = iminor(file_inode(file));  	struct pp_struct *pp = file->private_data;  	char * kbuffer;  	ssize_t bytes_read = 0; @@ -189,7 +189,7 @@ static ssize_t pp_read (struct file * file, char __user * buf, size_t count,  static ssize_t pp_write (struct file * file, const char __user * buf,  			 size_t count, loff_t * ppos)  { -	unsigned int minor = iminor(file->f_path.dentry->d_inode); +	unsigned int minor = iminor(file_inode(file));  	struct pp_struct *pp = file->private_data;  	char * kbuffer;  	ssize_t bytes_written = 0; @@ -251,12 +251,8 @@ static ssize_t pp_write (struct file * file, const char __user * buf,  			break;  		} -		if (signal_pending (current)) { -			if (!bytes_written) { -				bytes_written = -EINTR; -			} +		if (signal_pending (current))  			break; -		}  		cond_resched();  	} @@ -328,7 +324,7 @@ static enum ieee1284_phase init_phase (int mode)  static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  { -	unsigned int minor = iminor(file->f_path.dentry->d_inode); +	unsigned int minor = iminor(file_inode(file));  	struct pp_struct *pp = file->private_data;  	struct parport * port;  	void __user *argp = (void __user *)arg; @@ -457,6 +453,7 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  			return -ENODEV;  		modes = port->modes; +		parport_put_port(port);  		if (copy_to_user (argp, &modes, sizeof (modes))) {  			return -EFAULT;  		} @@ -782,7 +779,8 @@ static int __init ppdev_init (void)  		err = PTR_ERR(ppdev_class);  		goto out_chrdev;  	} -	if (parport_register_driver(&pp_driver)) { +	err = parport_register_driver(&pp_driver); +	if (err < 0) {  		printk (KERN_WARNING CHRDEV ": unable to register with parport\n");  		goto out_class;  	}  | 
