From patchwork Wed Oct 18 20:00:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chenbo Feng X-Patchwork-Id: 827799 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="tzWkBfYf"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yHNH321GYz9sBd for ; Thu, 19 Oct 2017 07:01:19 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751618AbdJRUBP (ORCPT ); Wed, 18 Oct 2017 16:01:15 -0400 Received: from mail-io0-f193.google.com ([209.85.223.193]:55665 "EHLO mail-io0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751498AbdJRUAs (ORCPT ); Wed, 18 Oct 2017 16:00:48 -0400 Received: by mail-io0-f193.google.com with SMTP id p186so7505118ioe.12; Wed, 18 Oct 2017 13:00:48 -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:in-reply-to:references; bh=AGlUi+Zy8nfIdSF7g7JVdXyyOtu/d7d6ElXhYKXxv9M=; b=tzWkBfYfC3nVw/ZIVef/MxB/eRAyD1q06N9TxwmD5gGkxT10Mzco6JOrl2+izqJbkU UDxfVV18reRTO3UMa/U074WgdxgGoOhHhpI79zt3CwhQHEi6jJe1zcVPRhL9sIj5FZn3 qzymmFsoX3G0gRQM5WgiLwfRs7THEgrHRtG/YFtModwX8uBoCuG8WaWY0Rrq/V22002w g/Pfl+VAIUbnBWDhrF7t2waZXfevXkpnXTVBG2jdwFhzxJmgOnfIh4NcuH2ChQk1kucJ 6gEsOeDjSl2kaMNoeuGrA7k5ymZ/mEO4u8rkeT7KP7LzTyA/u5e6ss/qcnVTrtpx9b8B 9ToQ== 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=AGlUi+Zy8nfIdSF7g7JVdXyyOtu/d7d6ElXhYKXxv9M=; b=Jb/9BC+R6Qs5uFBQs564hBjGZvoYYnZvDwgdTkZ8MfpRGyOX/FG9mw45MDLRgisRWr lXvNQcFt/fvnX/xtmGdfByrcZLSedgmQND2i5aqcanS1uy2hMy/bDoj2Mwcc7cbWYGoy Eb6dcWExGT6aetAkXh37KPSHenuUOPNLzlyaJd2vrQjB/1HAINv4Og8xzpbAgLVm5/yV dVue3sbj0ct8LfRxCbDzucOsNct0rWWST8qQ21pttRDCXQD5KUgTY3p3pDothcGmcviS XEVXLBVJKo82DCwuM8MZKOi31plonK0fULfzKZubMj43UyA43GQFPegak0RT6w25OSLq zOAA== X-Gm-Message-State: AMCzsaXUa0S0Qu6AM3Dm9sk1DOWVAFGRIEqh5x/2mJzjpHaMtSRhCQZW Du2ArrmQaP1H+InQSYMEOq+QWxy33gY= X-Google-Smtp-Source: ABhQp+T2O6EZSqas3nFBIW4MFxXrg+tuJWRnCJgyR4OVfWMNJbFTnKY/ubW7n7K2yShEGXaqR6ueGQ== X-Received: by 10.107.27.144 with SMTP id b138mr6629054iob.9.1508356847422; Wed, 18 Oct 2017 13:00:47 -0700 (PDT) Received: from fengc.mtv.corp.google.com ([100.98.120.50]) by smtp.gmail.com with ESMTPSA id 78sm3550047ioo.37.2017.10.18.13.00.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 18 Oct 2017 13:00:46 -0700 (PDT) From: Chenbo Feng To: netdev@vger.kernel.org, SELinux , linux-security-module@vger.kernel.org Cc: Jeffrey Vander Stoep , Alexei Starovoitov , lorenzo@google.com, Daniel Borkmann , Stephen Smalley , James Morris , Paul Moore , Chenbo Feng Subject: [PATCH net-next v7 2/5] bpf: Add tests for eBPF file mode Date: Wed, 18 Oct 2017 13:00:23 -0700 Message-Id: <20171018200026.146093-3-chenbofeng.kernel@gmail.com> X-Mailer: git-send-email 2.15.0.rc1.287.g2b38de12cc-goog In-Reply-To: <20171018200026.146093-1-chenbofeng.kernel@gmail.com> References: <20171018200026.146093-1-chenbofeng.kernel@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Chenbo Feng Two related tests are added into bpf selftest to test read only map and write only map. The tests verified the read only and write only flags are working on hash maps. Signed-off-by: Chenbo Feng Acked-by: Daniel Borkmann --- tools/testing/selftests/bpf/test_maps.c | 48 +++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tools/testing/selftests/bpf/test_maps.c b/tools/testing/selftests/bpf/test_maps.c index fe3a443a1102..896f23cfe918 100644 --- a/tools/testing/selftests/bpf/test_maps.c +++ b/tools/testing/selftests/bpf/test_maps.c @@ -1033,6 +1033,51 @@ static void test_map_parallel(void) assert(bpf_map_get_next_key(fd, &key, &key) == -1 && errno == ENOENT); } +static void test_map_rdonly(void) +{ + int i, fd, key = 0, value = 0; + + fd = bpf_create_map(BPF_MAP_TYPE_HASH, sizeof(key), sizeof(value), + MAP_SIZE, map_flags | BPF_F_RDONLY); + if (fd < 0) { + printf("Failed to create map for read only test '%s'!\n", + strerror(errno)); + exit(1); + } + + key = 1; + value = 1234; + /* Insert key=1 element. */ + assert(bpf_map_update_elem(fd, &key, &value, BPF_ANY) == -1 && + errno == EPERM); + + /* Check that key=2 is not found. */ + assert(bpf_map_lookup_elem(fd, &key, &value) == -1 && errno == ENOENT); + assert(bpf_map_get_next_key(fd, &key, &value) == -1 && errno == ENOENT); +} + +static void test_map_wronly(void) +{ + int i, fd, key = 0, value = 0; + + fd = bpf_create_map(BPF_MAP_TYPE_HASH, sizeof(key), sizeof(value), + MAP_SIZE, map_flags | BPF_F_WRONLY); + if (fd < 0) { + printf("Failed to create map for read only test '%s'!\n", + strerror(errno)); + exit(1); + } + + key = 1; + value = 1234; + /* Insert key=1 element. */ + assert(bpf_map_update_elem(fd, &key, &value, BPF_ANY) == 0) + + /* Check that key=2 is not found. */ + assert(bpf_map_lookup_elem(fd, &key, &value) == -1 && errno == EPERM); + assert(bpf_map_get_next_key(fd, &key, &value) == -1 && errno == EPERM); +} + static void run_all_tests(void) { test_hashmap(0, NULL); @@ -1050,6 +1095,9 @@ static void run_all_tests(void) test_map_large(); test_map_parallel(); test_map_stress(); + + test_map_rdonly(); + test_map_wronly(); } int main(void)