From patchwork Thu Jun 1 00:38:22 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hangbin Liu X-Patchwork-Id: 769456 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wdT443rYJz9sD5 for ; Thu, 1 Jun 2017 10:39:00 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="q/WLQcw2"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751241AbdFAAi5 (ORCPT ); Wed, 31 May 2017 20:38:57 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:35434 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750954AbdFAAi4 (ORCPT ); Wed, 31 May 2017 20:38:56 -0400 Received: by mail-pf0-f195.google.com with SMTP id u26so5119309pfd.2 for ; Wed, 31 May 2017 17:38:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=JkO5m/n1xiNKR/h96l3JpmeCPizYE8vhHHgHD/lccXk=; b=q/WLQcw2KjR2r41cdBFwGt7T1V2fttc46mL/By1Ijiph5NYWmJOHtvcqfe+aRqcyeq i7ndZRbkIpKWyjFtPpKfBODUNgHGTTXc5jGzSXBmUAADy+WNmnAg0mHfERMPjV24KYxk weUFSwPDcko/6irijChbdsvHKUwClyCxmSvxyCHYPLNUqynlSbL5N90SaVUJS1v4Dsfa EsPQiBPU98hlBoT5i5Sf1ac8mXDWoDa7E9FIT4L0kbWS4OO6+avC/W24UzE5PikiBwv7 P5DFVKjlRtCuZp5KndJZHLFfM9oF1KeyZ1kO4anY7gK0Bwff7i+ovo2tYxIVSZCmdULJ ILqA== 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=JkO5m/n1xiNKR/h96l3JpmeCPizYE8vhHHgHD/lccXk=; b=ZdXqV27ihZfihI4fNo2slX8OOszNqX9e+TsL9hErxRSg5Ih0c/hQamYvYrzxlrYrBs LkxUbJfAyxJgqRkMcM3+Tg3vPjBs/EUNoX8rguBmTwl050pSRzlBCd4dMcbvbmeDtQD0 +DVyPb5UszwgKLUd5t0MOwdimWBi3FM8iMTT1tO7j+HOtpOelAb60GSM8PezXpmAxeW+ dhDczhVg0gskd60LMFdSgb/eJ2H1yTVq2kV8nNnd3nz9D1dh42r+1jNXu2GpkRhvnr2z DWI8EqlWG2Yr366FRa7C1gas+IzxSh+ErqL32TDQqbhsxj3B8Eq+AMLm+jlov98YeoCY fdxQ== X-Gm-Message-State: AODbwcA2BtVJ2u93BoBanmhHm+rvTne/Ocmak3oFpUDpUC1t36vEDuUF fzJw2Yf5OWEKLXPo X-Received: by 10.99.149.14 with SMTP id p14mr30760660pgd.148.1496277535541; Wed, 31 May 2017 17:38:55 -0700 (PDT) Received: from leo.usersys.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id m80sm31197295pfg.107.2017.05.31.17.38.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 31 May 2017 17:38:54 -0700 (PDT) From: Hangbin Liu To: netdev@vger.kernel.org Cc: Guy Shapiro , Steffen Klassert , David Miller , Hangbin Liu Subject: [PATCH] xfrm: fix xfrm_dev_event() missing when compile without CONFIG_XFRM_OFFLOAD Date: Thu, 1 Jun 2017 08:38:22 +0800 Message-Id: <1496277502-10642-1-git-send-email-liuhangbin@gmail.com> X-Mailer: git-send-email 2.5.5 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In commit d77e38e612a0 ("xfrm: Add an IPsec hardware offloading API") we make xfrm_device.o only compiled when enable option CONFIG_XFRM_OFFLOAD. But this will make xfrm_dev_event() missing if we only enable default XFRM options. So when we set down and unregister an interface with IPsec on it. there will no xfrm_garbage_collect(), which will cause dev usage count hold and get error like: unregister_netdevice: waiting for to become free. Usage count = 4 Fixes: d77e38e612a0 ("xfrm: Add an IPsec hardware offloading API") Signed-off-by: Hangbin Liu --- net/xfrm/Makefile | 3 +-- net/xfrm/xfrm_device.c | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/net/xfrm/Makefile b/net/xfrm/Makefile index abf81b3..55b2ac3 100644 --- a/net/xfrm/Makefile +++ b/net/xfrm/Makefile @@ -4,8 +4,7 @@ obj-$(CONFIG_XFRM) := xfrm_policy.o xfrm_state.o xfrm_hash.o \ xfrm_input.o xfrm_output.o \ - xfrm_sysctl.o xfrm_replay.o -obj-$(CONFIG_XFRM_OFFLOAD) += xfrm_device.o + xfrm_sysctl.o xfrm_replay.o xfrm_device.o obj-$(CONFIG_XFRM_STATISTICS) += xfrm_proc.o obj-$(CONFIG_XFRM_ALGO) += xfrm_algo.o obj-$(CONFIG_XFRM_USER) += xfrm_user.o diff --git a/net/xfrm/xfrm_device.c b/net/xfrm/xfrm_device.c index 574e6f3..5aba036 100644 --- a/net/xfrm/xfrm_device.c +++ b/net/xfrm/xfrm_device.c @@ -22,6 +22,7 @@ #include #include +#ifdef CONFIG_XFRM_OFFLOAD int validate_xmit_xfrm(struct sk_buff *skb, netdev_features_t features) { int err; @@ -137,6 +138,7 @@ bool xfrm_dev_offload_ok(struct sk_buff *skb, struct xfrm_state *x) return true; } EXPORT_SYMBOL_GPL(xfrm_dev_offload_ok); +#endif int xfrm_dev_register(struct net_device *dev) {