From patchwork Sun Feb 3 08:15:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yafang Shao X-Patchwork-Id: 1035573 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="uO4UyH+V"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43skDl0xCgz9s4Z for ; Sun, 3 Feb 2019 19:15:50 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727264AbfBCIPY (ORCPT ); Sun, 3 Feb 2019 03:15:24 -0500 Received: from mail-pl1-f194.google.com ([209.85.214.194]:45524 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725891AbfBCIPY (ORCPT ); Sun, 3 Feb 2019 03:15:24 -0500 Received: by mail-pl1-f194.google.com with SMTP id a14so5351254plm.12 for ; Sun, 03 Feb 2019 00:15:24 -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=pVX8c5yf9kvuxos7FPVbmZLRVWyakrrfXd5SW9mXi+8=; b=uO4UyH+V4RTmtshKL4FNFxx7sGFOY58lNOKxK18QC6q7foRNzjhr/CFMo9kbWc0FMu RH7Pay9V/GEYqI6wV66iGZx7y/nhI+eVkyQwIBOehGGOk7TPl7Fg6prR7RR3vScoz+yi fKN56Vgoy5extOg1y3ZCxnB+zZp8IJ6SDE4ubDSHEHawMGw2LGONuAW6rM9gzRF1qeLx VgIr1IAn4ymCfvei0F4lxTDyj/Kg/x47Im+fkCsNcb3B2bgxJi63PcKNUraHi88OEu/J sw8XLBksrxaFGUxp6ZVR8pB6aEokFA64q8walnCwoljYJXxsYsGO14EQ8CZwMYFFQpHL Wkcg== 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=pVX8c5yf9kvuxos7FPVbmZLRVWyakrrfXd5SW9mXi+8=; b=NswrSvKw4GBVqDLH6OhXHj86xAp+KRenHCJW0s0B3izv+VdaLQc6TPJZnXEAezOdi4 wU9ih1C06fKwvhu9/wS5Lpq+QZ0ektnHdVIq88gfdsxM1fw5adC7NewWSoYniLfDP4nX 845hhfrlv1byGoBdF4QjgFqVbNskW/cequP1Jbz5DrCJl4uVnxj7TScVmcbRyl8uap7J d9qEH8BiK3WbWzw3AXubqJ1VO8DIK15X7F36NG6vE9gSCTqgdsDbnNCYHZ5nsGB5h0E8 SV5llnjy49Vuwp6lgCA0Vx9WQRnqfREDPvvMqm+wRHtCZsJLEk+pYNLbdQTgN0KMFqWE B2qw== X-Gm-Message-State: AHQUAuYwB+Vg4PqD9TkXrtiImMUa/cUQacrIUTxCnwDKFEdoSClWknuB j1CH/CzYwTuBWjLKSqZk4KKVobPfeLU= X-Google-Smtp-Source: AHgI3Ibng0icRq0TP2Ga4PE/b8ocakAxPmcsiAAr+c6wOh3b0fUcMzc9Q8t9lX5vFN9z1AZ2k9j9wA== X-Received: by 2002:a17:902:12e:: with SMTP id 43mr1269195plb.31.1549181723656; Sun, 03 Feb 2019 00:15:23 -0800 (PST) Received: from li1588-6.members.linode.com (li1588-6.members.linode.com. [139.162.104.6]) by smtp.gmail.com with ESMTPSA id f64sm49724348pfh.0.2019.02.03.00.15.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 03 Feb 2019 00:15:22 -0800 (PST) From: Yafang Shao To: kafai@fb.com, brakmo@fb.com, ast@kernel.org, daniel@iogearbox.net Cc: netdev@vger.kernel.org, shaoyafang@didiglobal.com, Yafang Shao Subject: [PATCH bpf-next] bpf: support SO_DEBUG in bpf_setsockopt() Date: Sun, 3 Feb 2019 16:15:07 +0800 Message-Id: <1549181707-16864-1-git-send-email-laoar.shao@gmail.com> X-Mailer: git-send-email 1.8.3.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Then we can enable/disable socket debugging without modifying user code. That is more convenient for debugging. Signed-off-by: Yafang Shao Acked-by: Yonghong Song Acked-by: Lawrence Brakmo --- include/net/sock.h | 8 ++++++++ net/core/filter.c | 3 +++ net/core/sock.c | 8 -------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/include/net/sock.h b/include/net/sock.h index 2b229f7..8decee9 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -1935,6 +1935,14 @@ static inline void sock_confirm_neigh(struct sk_buff *skb, struct neighbour *n) } } +static inline void sock_valbool_flag(struct sock *sk, int bit, int valbool) +{ + if (valbool) + sock_set_flag(sk, bit); + else + sock_reset_flag(sk, bit); +} + bool sk_mc_loop(struct sock *sk); static inline bool sk_can_gso(const struct sock *sk) diff --git a/net/core/filter.c b/net/core/filter.c index 3a49f68..ce5da57 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -4111,6 +4111,9 @@ static unsigned long bpf_xdp_copy(void *dst_buff, const void *src_buff, /* Only some socketops are supported */ switch (optname) { + case SO_DEBUG: + sock_valbool_flag(sk, SOCK_DBG, val); + break; case SO_RCVBUF: sk->sk_userlocks |= SOCK_RCVBUF_LOCK; sk->sk_rcvbuf = max_t(int, val * 2, SOCK_MIN_RCVBUF); diff --git a/net/core/sock.c b/net/core/sock.c index 900e8a9..5ef6daa 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -638,14 +638,6 @@ static int sock_getbindtodevice(struct sock *sk, char __user *optval, return ret; } -static inline void sock_valbool_flag(struct sock *sk, int bit, int valbool) -{ - if (valbool) - sock_set_flag(sk, bit); - else - sock_reset_flag(sk, bit); -} - bool sk_mc_loop(struct sock *sk) { if (dev_recursion_level())