From patchwork Thu Jan 18 16:20:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Aring X-Patchwork-Id: 863006 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=mojatatu-com.20150623.gappssmtp.com header.i=@mojatatu-com.20150623.gappssmtp.com header.b="sYN/twx1"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zMq2y5vC3z9s81 for ; Fri, 19 Jan 2018 03:21:30 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933484AbeARQV3 (ORCPT ); Thu, 18 Jan 2018 11:21:29 -0500 Received: from mail-io0-f196.google.com ([209.85.223.196]:38782 "EHLO mail-io0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933470AbeARQVR (ORCPT ); Thu, 18 Jan 2018 11:21:17 -0500 Received: by mail-io0-f196.google.com with SMTP id d11so25436990iog.5 for ; Thu, 18 Jan 2018 08:21:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mojatatu-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=nfC3Zr670B9rLhPmjL+SEQfVotaqfm98KO6bMDNTOZE=; b=sYN/twx1QJ3CTm3tFPu8aMYL8d3s4LyVhdmNZkCgQWu3XMiCYrIO+UjDgudzTy80CD sOYDoJNv3bjMPppdkkQPU3n1QsT8aDKg8Z3Ujw/OufNN16RNdGA2TUkrjGSGF+41FnV2 hOs7o/kb4j84/vyG+YXkPWPAcbU1Hp/DDEhgET7vUylD1tZ/Tbgiya1o2HJBLVubeLBN 1cq+Rko76ytMuf/pEWa6kRjlFH0BbJFdzcVoG5VdVmN6+bQRCPr0LBlEPFthN3ScwumQ NzOhPnDN3v0Fh6e/G6z+7oMk8BN41X2mLpkif7+bYFw4xiGmSeiR2Jjt6eOjGJS/dUsF v4hQ== 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:in-reply-to :references; bh=nfC3Zr670B9rLhPmjL+SEQfVotaqfm98KO6bMDNTOZE=; b=hC7gujxRdtV23vqILJhl7iO8wmUXiAicS4JMPNK8oEoUf7e29rmbD5qeTY5BTnGx40 zfFyebCB3uiHEVsQAGx8dXx/7Wir8Y4gG1kqpe+ExfuaIA6sBdAS1gCAvIsN3pkvfUUf Pjtcyvyh+O5IRQewRLVVOnD0/yohMLbR2jYIWe6cDyE/rQ8M6hxhfwznH4mDlDNgoM7Z rg+YgNXvWif4NwppsKDk2Cj+DeV2w8q693LdICRcrQ/XRD/kHN2PnJleq7OVtslauW5k 8BhtQlsGJJE8X9Cus0Le+cxmvRHOt8D+47VO6aWcWGWTi1a7hxz4XUiC2GpgyV8/gb2h IkAA== X-Gm-Message-State: AKwxyte8gVHxYgi1xFuyAQWqGmKQxGtCdPmrZ/u6WPRzYxIiHZ+CEYdq GUECycI6+GlONcKxT/tkKNokyA== X-Google-Smtp-Source: ACJfBosglqNewb6u18fMYb1nonowFzMpbDM1pUlxwOivyu1X0BcCzk87lqJBENQrHPk+Vwrz5f2seQ== X-Received: by 10.107.11.130 with SMTP id 2mr16564168iol.80.1516292476966; Thu, 18 Jan 2018 08:21:16 -0800 (PST) Received: from x220t.lan ([64.26.149.125]) by smtp.gmail.com with ESMTPSA id k185sm3831890iok.39.2018.01.18.08.21.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Jan 2018 08:21:16 -0800 (PST) From: Alexander Aring To: jhs@mojatatu.com Cc: xiyou.wangcong@gmail.com, jiri@resnulli.us, davem@davemloft.net, netdev@vger.kernel.org, kernel@mojatatu.com, kubakici@wp.pl, Alexander Aring , David Ahern Subject: [PATCHv3 net-next 6/7] net: sched: cls: add extack support for tcf_change_indev Date: Thu, 18 Jan 2018 11:20:54 -0500 Message-Id: <20180118162055.31587-7-aring@mojatatu.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180118162055.31587-1-aring@mojatatu.com> References: <20180118162055.31587-1-aring@mojatatu.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch adds extack handling for the tcf_change_indev function which is common used by TC classifier implementations. Cc: David Ahern Signed-off-by: Alexander Aring Acked-by: Jiri Pirko --- include/net/pkt_cls.h | 7 +++++-- net/sched/cls_flower.c | 7 ++++--- net/sched/cls_fw.c | 2 +- net/sched/cls_u32.c | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 6dd009e10e5d..2e4b8e436d25 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -557,13 +557,16 @@ static inline int tcf_valid_offset(const struct sk_buff *skb, #include static inline int -tcf_change_indev(struct net *net, struct nlattr *indev_tlv) +tcf_change_indev(struct net *net, struct nlattr *indev_tlv, + struct netlink_ext_ack *extack) { char indev[IFNAMSIZ]; struct net_device *dev; - if (nla_strlcpy(indev, indev_tlv, IFNAMSIZ) >= IFNAMSIZ) + if (nla_strlcpy(indev, indev_tlv, IFNAMSIZ) >= IFNAMSIZ) { + NL_SET_ERR_MSG(extack, "Interface name too long"); return -EINVAL; + } dev = __dev_get_by_name(net, indev); if (!dev) return -ENODEV; diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index 50145b873ff1..c6ac4a612c4a 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c @@ -526,13 +526,14 @@ static void fl_set_key_ip(struct nlattr **tb, } static int fl_set_key(struct net *net, struct nlattr **tb, - struct fl_flow_key *key, struct fl_flow_key *mask) + struct fl_flow_key *key, struct fl_flow_key *mask, + struct netlink_ext_ack *extack) { __be16 ethertype; int ret = 0; #ifdef CONFIG_NET_CLS_IND if (tb[TCA_FLOWER_INDEV]) { - int err = tcf_change_indev(net, tb[TCA_FLOWER_INDEV]); + int err = tcf_change_indev(net, tb[TCA_FLOWER_INDEV], extack); if (err < 0) return err; key->indev_ifindex = err; @@ -841,7 +842,7 @@ static int fl_set_parms(struct net *net, struct tcf_proto *tp, tcf_bind_filter(tp, &f->res, base); } - err = fl_set_key(net, tb, &f->key, &mask->key); + err = fl_set_key(net, tb, &f->key, &mask->key, extack); if (err) return err; diff --git a/net/sched/cls_fw.c b/net/sched/cls_fw.c index bd21ed83eb07..94d159a8869a 100644 --- a/net/sched/cls_fw.c +++ b/net/sched/cls_fw.c @@ -239,7 +239,7 @@ static int fw_set_parms(struct net *net, struct tcf_proto *tp, #ifdef CONFIG_NET_CLS_IND if (tb[TCA_FW_INDEV]) { int ret; - ret = tcf_change_indev(net, tb[TCA_FW_INDEV]); + ret = tcf_change_indev(net, tb[TCA_FW_INDEV], extack); if (ret < 0) return ret; f->ifindex = ret; diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index 7f772da8e627..e8963ed35899 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c @@ -804,7 +804,7 @@ static int u32_set_parms(struct net *net, struct tcf_proto *tp, #ifdef CONFIG_NET_CLS_IND if (tb[TCA_U32_INDEV]) { int ret; - ret = tcf_change_indev(net, tb[TCA_U32_INDEV]); + ret = tcf_change_indev(net, tb[TCA_U32_INDEV], extack); if (ret < 0) return -EINVAL; n->ifindex = ret;