Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/833386/?format=api
{ "id": 833386, "url": "http://patchwork.ozlabs.org/api/1.2/patches/833386/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/1509633431-2184-3-git-send-email-josef@toxicpanda.com/", "project": { "id": 7, "url": "http://patchwork.ozlabs.org/api/1.2/projects/7/?format=api", "name": "Linux network development", "link_name": "netdev", "list_id": "netdev.vger.kernel.org", "list_email": "netdev@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1509633431-2184-3-git-send-email-josef@toxicpanda.com>", "list_archive_url": null, "date": "2017-11-02T14:37:11", "name": "[2/2] samples/bpf: add a test for bpf_override_return", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": true, "hash": "f767335782ba8de995a14d9470f7d39be03f8a60", "submitter": { "id": 72383, "url": "http://patchwork.ozlabs.org/api/1.2/people/72383/?format=api", "name": "Josef Bacik", "email": "josef@toxicpanda.com" }, "delegate": { "id": 34, "url": "http://patchwork.ozlabs.org/api/1.2/users/34/?format=api", "username": "davem", "first_name": "David", "last_name": "Miller", "email": "davem@davemloft.net" }, "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/1509633431-2184-3-git-send-email-josef@toxicpanda.com/mbox/", "series": [ { "id": 11520, "url": "http://patchwork.ozlabs.org/api/1.2/series/11520/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=11520", "date": "2017-11-02T14:37:10", "name": "Add the ability to do BPF directed error injection", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/11520/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/833386/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/833386/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<netdev-owner@vger.kernel.org>", "X-Original-To": "patchwork-incoming@ozlabs.org", "Delivered-To": "patchwork-incoming@ozlabs.org", "Authentication-Results": [ "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)", "ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=toxicpanda-com.20150623.gappssmtp.com\n\theader.i=@toxicpanda-com.20150623.gappssmtp.com\n\theader.b=\"rq8w13Tf\"; dkim-atps=neutral" ], "Received": [ "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3ySSPG4NfJz9sNw\n\tfor <patchwork-incoming@ozlabs.org>;\n\tFri, 3 Nov 2017 01:38:10 +1100 (AEDT)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S933627AbdKBOhh (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tThu, 2 Nov 2017 10:37:37 -0400", "from mail-qk0-f196.google.com ([209.85.220.196]:56116 \"EHLO\n\tmail-qk0-f196.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S933458AbdKBOhT (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Thu, 2 Nov 2017 10:37:19 -0400", "by mail-qk0-f196.google.com with SMTP id x82so6386741qkb.12\n\tfor <netdev@vger.kernel.org>; Thu, 02 Nov 2017 07:37:18 -0700 (PDT)", "from localhost\n\t(cpe-2606-A000-4381-1201-225-22FF-FEB3-E51A.dyn6.twc.com.\n\t[2606:a000:4381:1201:225:22ff:feb3:e51a])\n\tby smtp.gmail.com with ESMTPSA id\n\tk126sm2148538qkc.69.2017.11.02.07.37.17\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tThu, 02 Nov 2017 07:37:17 -0700 (PDT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=toxicpanda-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=/xZ+xdxCmKjNGEQmfg98zrHbzr6GBRz/LJMbBzz29o0=;\n\tb=rq8w13TfuSD8sfBon9jeMtN8hrHXSECNaWVsqi7JCYFTsKmt7RGkF5z8pPY5yo8HTX\n\tPlyNBeNVsoVrzrQKzv3f0wUMfYzq2owVl0JtSdlUFycRoQLag5PxN2t0jF3ZQ34LXsH1\n\tWfy9dh9QhluywZSW2E59j1zcvUN75zwk1O2s/CFmgt4D0mn6rkj5fCL2G1/ApgNQLCMb\n\t1Bv6b7mSCoyhYk5AfgHkh4G0GuAw+bvQkJVlOcOVM3YWp4/mte0IlwbrLfl1qYvLcpxh\n\tiBpcDwRAFe5jiaV1Kj/Elvf/fSowdL00wPxefLpUWut1Qlu2U8n3pXU2lvN3AQBPLeaq\n\tMjoA==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=/xZ+xdxCmKjNGEQmfg98zrHbzr6GBRz/LJMbBzz29o0=;\n\tb=T4JSta2877XYAnPzQcs4oK/YcKSKhGVhJk/uoLB0l8aWXCTgYD8iLAv4mPl+B2IlsF\n\tspSmvjcdWEG9TeFebh0X4/LhnhY5HMzu695EfZIyOVkvEVriAm2qA2PL899KzAbVc3BM\n\tnoCoj14uKWM8JwOGDEzTqoxEnmAA8hX14gGQFWQGWPFW8o9eHv7DhoGmZBkvqyiBJ4m+\n\tgRV9TxV9SU3KeQH6J3ATAqEknkjADfSR4euGwHy9zglqJsm/GMuYHTx/3SKLHiDJTOhU\n\txqmr+5DMib4uRPVKQwEs9svCaGC6/HnVpKKXbNVMDKkrRG75X+H44lYFyLlXKUYUYebq\n\tIjsA==", "X-Gm-Message-State": "AJaThX4V9p4uwoJzig3MclbBcQc2guJtMcecJhWqSv9n2ygqGmVTi44x\n\tKod5l3Y01CHz2S9kzNN/vtwigg==", "X-Google-Smtp-Source": "ABhQp+Q/9Ep8KAcgmKnFFdFyCQkpOcW6NT2gM6qMZb+vpYCuzsZmuzHUMKaeDPsrIPSJmma867m4Og==", "X-Received": "by 10.55.18.28 with SMTP id c28mr5014198qkh.297.1509633438364;\n\tThu, 02 Nov 2017 07:37:18 -0700 (PDT)", "From": "Josef Bacik <josef@toxicpanda.com>", "To": "rostedt@goodmis.org, mingo@redhat.com, davem@davemloft.net,\n\tnetdev@vger.kernel.org, linux-kernel@vger.kernel.org,\n\tast@kernel.org, kernel-team@fb.com, daniel@iogearbox.net", "Cc": "Josef Bacik <jbacik@fb.com>", "Subject": "[PATCH 2/2] samples/bpf: add a test for bpf_override_return", "Date": "Thu, 2 Nov 2017 10:37:11 -0400", "Message-Id": "<1509633431-2184-3-git-send-email-josef@toxicpanda.com>", "X-Mailer": "git-send-email 2.7.5", "In-Reply-To": "<1509633431-2184-1-git-send-email-josef@toxicpanda.com>", "References": "<1509633431-2184-1-git-send-email-josef@toxicpanda.com>", "Sender": "netdev-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<netdev.vger.kernel.org>", "X-Mailing-List": "netdev@vger.kernel.org" }, "content": "From: Josef Bacik <jbacik@fb.com>\n\nThis adds a basic test for bpf_override_return to verify it works. We\noverride the main function for mounting a btrfs fs so it'll return\n-ENOMEM and then make sure that trying to mount a btrfs fs will fail.\n\nAcked-by: Alexei Starovoitov <ast@kernel.org>\nSigned-off-by: Josef Bacik <jbacik@fb.com>\n---\n samples/bpf/Makefile | 4 ++++\n samples/bpf/test_override_return.sh | 15 +++++++++++++++\n samples/bpf/tracex7_kern.c | 16 ++++++++++++++++\n samples/bpf/tracex7_user.c | 28 ++++++++++++++++++++++++++++\n tools/include/uapi/linux/bpf.h | 7 ++++++-\n tools/testing/selftests/bpf/bpf_helpers.h | 3 ++-\n 6 files changed, 71 insertions(+), 2 deletions(-)\n create mode 100755 samples/bpf/test_override_return.sh\n create mode 100644 samples/bpf/tracex7_kern.c\n create mode 100644 samples/bpf/tracex7_user.c", "diff": "diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile\nindex ea2b9e6135f3..83d06bc1f710 100644\n--- a/samples/bpf/Makefile\n+++ b/samples/bpf/Makefile\n@@ -14,6 +14,7 @@ hostprogs-y += tracex3\n hostprogs-y += tracex4\n hostprogs-y += tracex5\n hostprogs-y += tracex6\n+hostprogs-y += tracex7\n hostprogs-y += test_probe_write_user\n hostprogs-y += trace_output\n hostprogs-y += lathist\n@@ -58,6 +59,7 @@ tracex3-objs := bpf_load.o $(LIBBPF) tracex3_user.o\n tracex4-objs := bpf_load.o $(LIBBPF) tracex4_user.o\n tracex5-objs := bpf_load.o $(LIBBPF) tracex5_user.o\n tracex6-objs := bpf_load.o $(LIBBPF) tracex6_user.o\n+tracex7-objs := bpf_load.o $(LIBBPF) tracex7_user.o\n load_sock_ops-objs := bpf_load.o $(LIBBPF) load_sock_ops.o\n test_probe_write_user-objs := bpf_load.o $(LIBBPF) test_probe_write_user_user.o\n trace_output-objs := bpf_load.o $(LIBBPF) trace_output_user.o\n@@ -100,6 +102,7 @@ always += tracex3_kern.o\n always += tracex4_kern.o\n always += tracex5_kern.o\n always += tracex6_kern.o\n+always += tracex7_kern.o\n always += sock_flags_kern.o\n always += test_probe_write_user_kern.o\n always += trace_output_kern.o\n@@ -153,6 +156,7 @@ HOSTLOADLIBES_tracex3 += -lelf\n HOSTLOADLIBES_tracex4 += -lelf -lrt\n HOSTLOADLIBES_tracex5 += -lelf\n HOSTLOADLIBES_tracex6 += -lelf\n+HOSTLOADLIBES_tracex7 += -lelf\n HOSTLOADLIBES_test_cgrp2_sock2 += -lelf\n HOSTLOADLIBES_load_sock_ops += -lelf\n HOSTLOADLIBES_test_probe_write_user += -lelf\ndiff --git a/samples/bpf/test_override_return.sh b/samples/bpf/test_override_return.sh\nnew file mode 100755\nindex 000000000000..e68b9ee6814b\n--- /dev/null\n+++ b/samples/bpf/test_override_return.sh\n@@ -0,0 +1,15 @@\n+#!/bin/bash\n+\n+rm -f testfile.img\n+dd if=/dev/zero of=testfile.img bs=1M seek=1000 count=1\n+DEVICE=$(losetup --show -f testfile.img)\n+mkfs.btrfs -f $DEVICE\n+mkdir tmpmnt\n+./tracex7 $DEVICE\n+if [ $? -eq 0 ]\n+then\n+\techo \"SUCCESS!\"\n+else\n+\techo \"FAILED!\"\n+fi\n+losetup -d $DEVICE\ndiff --git a/samples/bpf/tracex7_kern.c b/samples/bpf/tracex7_kern.c\nnew file mode 100644\nindex 000000000000..1ab308a43e0f\n--- /dev/null\n+++ b/samples/bpf/tracex7_kern.c\n@@ -0,0 +1,16 @@\n+#include <uapi/linux/ptrace.h>\n+#include <uapi/linux/bpf.h>\n+#include <linux/version.h>\n+#include \"bpf_helpers.h\"\n+\n+SEC(\"kprobe/open_ctree\")\n+int bpf_prog1(struct pt_regs *ctx)\n+{\n+\tunsigned long rc = -12;\n+\n+\tbpf_override_return(ctx, rc);\n+\treturn 0;\n+}\n+\n+char _license[] SEC(\"license\") = \"GPL\";\n+u32 _version SEC(\"version\") = LINUX_VERSION_CODE;\ndiff --git a/samples/bpf/tracex7_user.c b/samples/bpf/tracex7_user.c\nnew file mode 100644\nindex 000000000000..8a52ac492e8b\n--- /dev/null\n+++ b/samples/bpf/tracex7_user.c\n@@ -0,0 +1,28 @@\n+#define _GNU_SOURCE\n+\n+#include <stdio.h>\n+#include <linux/bpf.h>\n+#include <unistd.h>\n+#include \"libbpf.h\"\n+#include \"bpf_load.h\"\n+\n+int main(int argc, char **argv)\n+{\n+\tFILE *f;\n+\tchar filename[256];\n+\tchar command[256];\n+\tint ret;\n+\n+\tsnprintf(filename, sizeof(filename), \"%s_kern.o\", argv[0]);\n+\n+\tif (load_bpf_file(filename)) {\n+\t\tprintf(\"%s\", bpf_log_buf);\n+\t\treturn 1;\n+\t}\n+\n+\tsnprintf(command, 256, \"mount %s tmpmnt/\", argv[1]);\n+\tf = popen(command, \"r\");\n+\tret = pclose(f);\n+\n+\treturn ret ? 0 : 1;\n+}\ndiff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h\nindex 4a4b6e78c977..3756dde69834 100644\n--- a/tools/include/uapi/linux/bpf.h\n+++ b/tools/include/uapi/linux/bpf.h\n@@ -673,6 +673,10 @@ union bpf_attr {\n * @buf: buf to fill\n * @buf_size: size of the buf\n * Return : 0 on success or negative error code\n+ *\n+ * int bpf_override_return(pt_regs, rc)\n+ *\t@pt_regs: pointer to struct pt_regs\n+ *\t@rc: the return value to set\n */\n #define __BPF_FUNC_MAPPER(FN)\t\t\\\n \tFN(unspec),\t\t\t\\\n@@ -732,7 +736,8 @@ union bpf_attr {\n \tFN(xdp_adjust_meta),\t\t\\\n \tFN(perf_event_read_value),\t\\\n \tFN(perf_prog_read_value),\t\\\n-\tFN(getsockopt),\n+\tFN(getsockopt),\t\t\t\\\n+\tFN(override_return),\n \n /* integer value in 'imm' field of BPF_CALL instruction selects which helper\n * function eBPF program intends to call\ndiff --git a/tools/testing/selftests/bpf/bpf_helpers.h b/tools/testing/selftests/bpf/bpf_helpers.h\nindex abfa4c5c8527..086733298d5e 100644\n--- a/tools/testing/selftests/bpf/bpf_helpers.h\n+++ b/tools/testing/selftests/bpf/bpf_helpers.h\n@@ -81,7 +81,8 @@ static int (*bpf_perf_event_read_value)(void *map, unsigned long long flags,\n static int (*bpf_perf_prog_read_value)(void *ctx, void *buf,\n \t\t\t\t unsigned int buf_size) =\n \t(void *) BPF_FUNC_perf_prog_read_value;\n-\n+static int (*bpf_override_return)(void *ctx, unsigned long rc) =\n+\t(void *) BPF_FUNC_override_return;\n \n /* llvm builtin functions that eBPF C program may use to\n * emit BPF_LD_ABS and BPF_LD_IND instructions\n", "prefixes": [ "2/2" ] }