aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/dgrp/dgrp_tty.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/drivers/staging/dgrp/dgrp_tty.c b/drivers/staging/dgrp/dgrp_tty.c
index 5796de8ddbe4..5647068b9385 100644
--- a/drivers/staging/dgrp/dgrp_tty.c
+++ b/drivers/staging/dgrp/dgrp_tty.c
@@ -2265,9 +2265,7 @@ static int get_modem_info(struct ch_struct *ch, unsigned int *value)
2265 | ((mlast & DM_RI) ? TIOCM_RNG : 0) 2265 | ((mlast & DM_RI) ? TIOCM_RNG : 0)
2266 | ((mlast & DM_DSR) ? TIOCM_DSR : 0) 2266 | ((mlast & DM_DSR) ? TIOCM_DSR : 0)
2267 | ((mlast & DM_CTS) ? TIOCM_CTS : 0); 2267 | ((mlast & DM_CTS) ? TIOCM_CTS : 0);
2268 put_user(mlast, (unsigned int __user *) value); 2268 return put_user(mlast, (unsigned int __user *) value);
2269
2270 return 0;
2271} 2269}
2272 2270
2273/* 2271/*
@@ -2285,7 +2283,8 @@ static int set_modem_info(struct ch_struct *ch, unsigned int command,
2285 if (error == 0) 2283 if (error == 0)
2286 return -EFAULT; 2284 return -EFAULT;
2287 2285
2288 get_user(arg, (unsigned int __user *) value); 2286 if (get_user(arg, (unsigned int __user *) value))
2287 return -EFAULT;
2289 mval |= ((arg & TIOCM_RTS) ? DM_RTS : 0) 2288 mval |= ((arg & TIOCM_RTS) ? DM_RTS : 0)
2290 | ((arg & TIOCM_DTR) ? DM_DTR : 0); 2289 | ((arg & TIOCM_DTR) ? DM_DTR : 0);
2291 2290
@@ -2616,12 +2615,8 @@ static int dgrp_tty_ioctl(struct tty_struct *tty, unsigned int cmd,
2616 return 0; 2615 return 0;
2617 2616
2618 case TIOCGSOFTCAR: 2617 case TIOCGSOFTCAR:
2619 rc = access_ok(VERIFY_WRITE, (void __user *) arg, 2618 return put_user(C_CLOCAL(tty) ? 1 : 0,
2620 sizeof(long)); 2619 (unsigned long __user *) arg);
2621 if (rc == 0)
2622 return -EFAULT;
2623 put_user(C_CLOCAL(tty) ? 1 : 0, (unsigned long __user *) arg);
2624 return 0;
2625 2620
2626 case TIOCMGET: 2621 case TIOCMGET:
2627 rc = access_ok(VERIFY_WRITE, (void __user *) arg, 2622 rc = access_ok(VERIFY_WRITE, (void __user *) arg,
@@ -2844,17 +2839,16 @@ static int dgrp_tty_ioctl(struct tty_struct *tty, unsigned int cmd,
2844 break; 2839 break;
2845 2840
2846 case DIGI_GETCUSTOMBAUD: 2841 case DIGI_GETCUSTOMBAUD:
2847 rc = access_ok(VERIFY_WRITE, (void __user *) arg, sizeof(int)); 2842 if (put_user(ch->ch_custom_speed, (unsigned int __user *) arg))
2848 if (rc == 0)
2849 return -EFAULT; 2843 return -EFAULT;
2850 put_user(ch->ch_custom_speed, (unsigned int __user *) arg);
2851 break; 2844 break;
2852 2845
2853 case DIGI_SETCUSTOMBAUD: 2846 case DIGI_SETCUSTOMBAUD:
2854 { 2847 {
2855 int new_rate; 2848 int new_rate;
2856 2849
2857 get_user(new_rate, (unsigned int __user *) arg); 2850 if (get_user(new_rate, (unsigned int __user *) arg))
2851 return -EFAULT;
2858 dgrp_set_custom_speed(ch, new_rate); 2852 dgrp_set_custom_speed(ch, new_rate);
2859 2853
2860 break; 2854 break;