diff options
Diffstat (limited to 'net/8021q/vlan.c')
-rw-r--r-- | net/8021q/vlan.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c index 91e412b0ab00..67465b65abe4 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c | |||
@@ -753,6 +753,8 @@ static int vlan_ioctl_handler(void __user *arg) | |||
753 | break; | 753 | break; |
754 | case GET_VLAN_REALDEV_NAME_CMD: | 754 | case GET_VLAN_REALDEV_NAME_CMD: |
755 | err = vlan_dev_get_realdev_name(args.device1, args.u.device2); | 755 | err = vlan_dev_get_realdev_name(args.device1, args.u.device2); |
756 | if (err) | ||
757 | goto out; | ||
756 | if (copy_to_user(arg, &args, | 758 | if (copy_to_user(arg, &args, |
757 | sizeof(struct vlan_ioctl_args))) { | 759 | sizeof(struct vlan_ioctl_args))) { |
758 | err = -EFAULT; | 760 | err = -EFAULT; |
@@ -761,6 +763,8 @@ static int vlan_ioctl_handler(void __user *arg) | |||
761 | 763 | ||
762 | case GET_VLAN_VID_CMD: | 764 | case GET_VLAN_VID_CMD: |
763 | err = vlan_dev_get_vid(args.device1, &vid); | 765 | err = vlan_dev_get_vid(args.device1, &vid); |
766 | if (err) | ||
767 | goto out; | ||
764 | args.u.VID = vid; | 768 | args.u.VID = vid; |
765 | if (copy_to_user(arg, &args, | 769 | if (copy_to_user(arg, &args, |
766 | sizeof(struct vlan_ioctl_args))) { | 770 | sizeof(struct vlan_ioctl_args))) { |
@@ -774,7 +778,7 @@ static int vlan_ioctl_handler(void __user *arg) | |||
774 | __FUNCTION__, args.cmd); | 778 | __FUNCTION__, args.cmd); |
775 | return -EINVAL; | 779 | return -EINVAL; |
776 | }; | 780 | }; |
777 | 781 | out: | |
778 | return err; | 782 | return err; |
779 | } | 783 | } |
780 | 784 | ||