netlink: mmap: fix tx type check
authorKen-ichirou MATSUZAWA <chamaken@gmail.com>
Thu, 20 Aug 2015 03:43:53 +0000 (12:43 +0900)
committerDavid S. Miller <davem@davemloft.net>
Sun, 23 Aug 2015 23:04:46 +0000 (16:04 -0700)
I can't send netlink message via mmaped netlink socket since

    commit: a8866ff6a5bce7d0ec465a63bc482a85c09b0d39
    netlink: make the check for "send from tx_ring" deterministic

msg->msg_iter.type is set to WRITE (1) at

    SYSCALL_DEFINE6(sendto, ...
        import_single_range(WRITE, ...
            iov_iter_init(1, WRITE, ...

call path, so that we need to check the type by iter_is_iovec()
to accept the WRITE.

Signed-off-by: Ken-ichirou MATSUZAWA <chamas@h4.dion.ne.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netlink/af_netlink.c

index 67d2104778636c62e7d3fa94c73ce5fb2cd4cb7d..a774985489e21e3bafffa8c8b6947290d0f58f75 100644 (file)
@@ -2401,7 +2401,7 @@ static int netlink_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)
         * sendmsg(), but that's what we've got...
         */
        if (netlink_tx_is_mmaped(sk) &&
-           msg->msg_iter.type == ITER_IOVEC &&
+           iter_is_iovec(&msg->msg_iter) &&
            msg->msg_iter.nr_segs == 1 &&
            msg->msg_iter.iov->iov_base == NULL) {
                err = netlink_mmap_sendmsg(sk, msg, dst_portid, dst_group,