diff options
Diffstat (limited to 'drivers/isdn/pcbit/drv.c')
-rw-r--r-- | drivers/isdn/pcbit/drv.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/isdn/pcbit/drv.c b/drivers/isdn/pcbit/drv.c index 94f21486bb24..6ead5e1508b7 100644 --- a/drivers/isdn/pcbit/drv.c +++ b/drivers/isdn/pcbit/drv.c | |||
@@ -725,23 +725,27 @@ static int pcbit_stat(u_char __user *buf, int len, int driver, int channel) | |||
725 | 725 | ||
726 | if (stat_st < stat_end) | 726 | if (stat_st < stat_end) |
727 | { | 727 | { |
728 | copy_to_user(buf, statbuf + stat_st, len); | 728 | if (copy_to_user(buf, statbuf + stat_st, len)) |
729 | return -EFAULT; | ||
729 | stat_st += len; | 730 | stat_st += len; |
730 | } | 731 | } |
731 | else | 732 | else |
732 | { | 733 | { |
733 | if (len > STATBUF_LEN - stat_st) | 734 | if (len > STATBUF_LEN - stat_st) |
734 | { | 735 | { |
735 | copy_to_user(buf, statbuf + stat_st, | 736 | if (copy_to_user(buf, statbuf + stat_st, |
736 | STATBUF_LEN - stat_st); | 737 | STATBUF_LEN - stat_st)) |
737 | copy_to_user(buf, statbuf, | 738 | return -EFAULT; |
738 | len - (STATBUF_LEN - stat_st)); | 739 | if (copy_to_user(buf, statbuf, |
740 | len - (STATBUF_LEN - stat_st))) | ||
741 | return -EFAULT; | ||
739 | 742 | ||
740 | stat_st = len - (STATBUF_LEN - stat_st); | 743 | stat_st = len - (STATBUF_LEN - stat_st); |
741 | } | 744 | } |
742 | else | 745 | else |
743 | { | 746 | { |
744 | copy_to_user(buf, statbuf + stat_st, len); | 747 | if (copy_to_user(buf, statbuf + stat_st, len)) |
748 | return -EFAULT; | ||
745 | 749 | ||
746 | stat_st += len; | 750 | stat_st += len; |
747 | 751 | ||