From patchwork Fri Feb 16 19:03:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Ahern X-Patchwork-Id: 874628 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="NiMgA1d/"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zjjGD5c6vz9sNx for ; Sat, 17 Feb 2018 06:03:16 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752846AbeBPTDN (ORCPT ); Fri, 16 Feb 2018 14:03:13 -0500 Received: from mail-pl0-f67.google.com ([209.85.160.67]:34859 "EHLO mail-pl0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752682AbeBPTDL (ORCPT ); Fri, 16 Feb 2018 14:03:11 -0500 Received: by mail-pl0-f67.google.com with SMTP id bb3so2162384plb.2 for ; Fri, 16 Feb 2018 11:03:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=W6RJngMRu0DoMuT2mUTqoTj6QuwIfqRnEwNxg5ZH5Xc=; b=NiMgA1d/ywADOAGHQEKORtPuQnPpAZPzIev0V2PoPK/W5YVzNdYEX2X89PHSsJECcS 2ikwRxVEpE4tzooCiDMwwIGoD9ZdNt8294/VDM5Ave7nap3YLOmqUomAKrJKOcU4tRks VNLj+UJFmzfMlA0bZNe91hH7WE2lNFAWU9+s44qOsHUTipcBn17kS7t5Q8wVx4dL0JqR GXqM6tfeRU4v+VLLmce5GuEJqEqfpxBoeLbgXivpU7pD0yKA7EzCu9O0fQ95Iil9nOil XF0WzBheFB2mrJtva/kmWBB1nz/Po2/vabvfoyxilWlF7AzshQvcs3+2JrcfH5fkGD4Z 2sUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=W6RJngMRu0DoMuT2mUTqoTj6QuwIfqRnEwNxg5ZH5Xc=; b=AwJ0wPcvj1Y8TS2LCLDKEOxYdoxUxH3qtZ71WsBH4wnvq5s71XHEums1NXYpSjPuoL 4WMGWJDpoRGLYBQvf1OgQNOxWIgkZUp1sTyyybPOzWBucO1B5pgPVgYkjvWQyFQEifu8 dDv+aT69gXZaZ1Jir7O2jucPCHnUd2/qvXuIsMKSSj7Sax/We51HiFtd3VlR/pZvDxJH FUfPE+YC+J7ZRuGMBQ/5CZVIBtUhUfZ7oHu5s42xHVBjNF2ctBSPJexO6j3PXRheBnfA H5JPF+mQxFP3xqPCcDHFShXQYAVM07iqDgyPvdyoT10SN4TtO/A+9dX8cevbkZSDMjc0 UJOg== X-Gm-Message-State: APf1xPBC/k+p4eFa1nfhcyPn06jssVBefBrzrZyuS9yWMd0pwAAvDDM8 N91zvKvCER/Ww9o+3xAbiUjn9A== X-Google-Smtp-Source: AH8x226kghxwQ+FiZfb7dnkCpz2TKrPJVQN8iJGNvEWJxJcYPSNruCuMvZlt3WQy/6bSz2ut8wL91A== X-Received: by 2002:a17:902:aa89:: with SMTP id d9-v6mr3781025plr.325.1518807790828; Fri, 16 Feb 2018 11:03:10 -0800 (PST) Received: from kenny.it.cumulusnetworks.com. (fw.cumulusnetworks.com. [216.129.126.126]) by smtp.googlemail.com with ESMTPSA id y4sm28311235pfm.16.2018.02.16.11.03.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Feb 2018 11:03:09 -0800 (PST) From: David Ahern To: netdev@vger.kernel.org Cc: David Ahern Subject: [PATCH net-next] net: Only honor ifindex in IP_PKTINFO if non-0 Date: Fri, 16 Feb 2018 11:03:03 -0800 Message-Id: <20180216190303.30769-1-dsahern@gmail.com> X-Mailer: git-send-email 2.11.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Only allow ifindex from IP_PKTINFO to override SO_BINDTODEVICE settings if the index is actually set in the message. Signed-off-by: David Ahern --- net/ipv4/ip_sockglue.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c index 008be04ac1cc..9dca0fb8c482 100644 --- a/net/ipv4/ip_sockglue.c +++ b/net/ipv4/ip_sockglue.c @@ -258,7 +258,8 @@ int ip_cmsg_send(struct sock *sk, struct msghdr *msg, struct ipcm_cookie *ipc, src_info = (struct in6_pktinfo *)CMSG_DATA(cmsg); if (!ipv6_addr_v4mapped(&src_info->ipi6_addr)) return -EINVAL; - ipc->oif = src_info->ipi6_ifindex; + if (src_info->ipi6_ifindex) + ipc->oif = src_info->ipi6_ifindex; ipc->addr = src_info->ipi6_addr.s6_addr32[3]; continue; } @@ -288,7 +289,8 @@ int ip_cmsg_send(struct sock *sk, struct msghdr *msg, struct ipcm_cookie *ipc, if (cmsg->cmsg_len != CMSG_LEN(sizeof(struct in_pktinfo))) return -EINVAL; info = (struct in_pktinfo *)CMSG_DATA(cmsg); - ipc->oif = info->ipi_ifindex; + if (info->ipi_ifindex) + ipc->oif = info->ipi_ifindex; ipc->addr = info->ipi_spec_dst.s_addr; break; }