X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=net%2Fcompat.c;h=dd32e34c1e2c9481aa2db3c37437ef0d85ba5277;hb=d73aa2867f33582314f098277421ded65f5745a9;hp=89032580bd1d8aa5ef29d1395661bdd0bcfe95f1;hpb=9bad5845485ec22b31d4489c3bd6d96d78442437;p=cascardo%2Flinux.git diff --git a/net/compat.c b/net/compat.c index 89032580bd1d..dd32e34c1e2c 100644 --- a/net/compat.c +++ b/net/compat.c @@ -72,7 +72,7 @@ int get_compat_msghdr(struct msghdr *kmsg, struct compat_msghdr __user *umsg) __get_user(kmsg->msg_flags, &umsg->msg_flags)) return -EFAULT; if (kmsg->msg_namelen > sizeof(struct sockaddr_storage)) - return -EINVAL; + kmsg->msg_namelen = sizeof(struct sockaddr_storage); kmsg->msg_name = compat_ptr(tmp1); kmsg->msg_iov = compat_ptr(tmp2); kmsg->msg_control = compat_ptr(tmp3); @@ -93,7 +93,8 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov, if (err < 0) return err; } - kern_msg->msg_name = kern_address; + if (kern_msg->msg_name) + kern_msg->msg_name = kern_address; } else kern_msg->msg_name = NULL;