Loading net/x25/af_x25.c +6 −5 Original line number Original line Diff line number Diff line Loading @@ -1562,19 +1562,20 @@ static int x25_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) case SIOCX25SCUDMATCHLEN: { case SIOCX25SCUDMATCHLEN: { struct x25_subaddr sub_addr; struct x25_subaddr sub_addr; rc = -EINVAL; rc = -EINVAL; lock_kernel(); lock_sock(sk); if(sk->sk_state != TCP_CLOSE) if(sk->sk_state != TCP_CLOSE) break; goto out_cud_release; rc = -EFAULT; rc = -EFAULT; if (copy_from_user(&sub_addr, argp, if (copy_from_user(&sub_addr, argp, sizeof(sub_addr))) sizeof(sub_addr))) break; goto out_cud_release; rc = -EINVAL; rc = -EINVAL; if(sub_addr.cudmatchlength > X25_MAX_CUD_LEN) if(sub_addr.cudmatchlength > X25_MAX_CUD_LEN) break; goto out_cud_release; x25->cudmatchlength = sub_addr.cudmatchlength; x25->cudmatchlength = sub_addr.cudmatchlength; unlock_kernel(); rc = 0; rc = 0; out_cud_release: release_sock(sk); break; break; } } Loading Loading
net/x25/af_x25.c +6 −5 Original line number Original line Diff line number Diff line Loading @@ -1562,19 +1562,20 @@ static int x25_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) case SIOCX25SCUDMATCHLEN: { case SIOCX25SCUDMATCHLEN: { struct x25_subaddr sub_addr; struct x25_subaddr sub_addr; rc = -EINVAL; rc = -EINVAL; lock_kernel(); lock_sock(sk); if(sk->sk_state != TCP_CLOSE) if(sk->sk_state != TCP_CLOSE) break; goto out_cud_release; rc = -EFAULT; rc = -EFAULT; if (copy_from_user(&sub_addr, argp, if (copy_from_user(&sub_addr, argp, sizeof(sub_addr))) sizeof(sub_addr))) break; goto out_cud_release; rc = -EINVAL; rc = -EINVAL; if(sub_addr.cudmatchlength > X25_MAX_CUD_LEN) if(sub_addr.cudmatchlength > X25_MAX_CUD_LEN) break; goto out_cud_release; x25->cudmatchlength = sub_addr.cudmatchlength; x25->cudmatchlength = sub_addr.cudmatchlength; unlock_kernel(); rc = 0; rc = 0; out_cud_release: release_sock(sk); break; break; } } Loading