copy_safe_from_sockptr()
  return copy_from_sockptr()
    return copy_from_sockptr_offset()
      return copy_from_user()
copy_from_user() does not return an error on fault. Instead, it returns a
number of bytes that were not copied. Have it handled.
Patch has a side effect: it un-breaks garbage input handling of
nfc_llcp_setsockopt() and mISDN's data_sock_setsockopt().
Fixes: 6309863b31dd ("net: add copy_safe_from_sockptr() helper")
Signed-off-by: Michal Luczaj <mhal@rbox.co>
Link: https://patch.msgid.link/20241111-sockptr-copy-ret-fix-v1-1-a520083a93fb@rbox.co
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
 {
        if (optlen < ksize)
                return -EINVAL;
-       return copy_from_sockptr(dst, optval, ksize);
+       if (copy_from_sockptr(dst, optval, ksize))
+               return -EFAULT;
+       return 0;
 }
 
 static inline int copy_struct_from_sockptr(void *dst, size_t ksize,