From patchwork Thu Oct 12 01:46:38 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chenbo Feng X-Patchwork-Id: 824639 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="qevDXWVY"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yCDHY6r6rz9t2l for ; Thu, 12 Oct 2017 12:47:21 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755044AbdJLBrT (ORCPT ); Wed, 11 Oct 2017 21:47:19 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:32890 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754818AbdJLBrM (ORCPT ); Wed, 11 Oct 2017 21:47:12 -0400 Received: by mail-pf0-f194.google.com with SMTP id m28so3970665pfi.0 for ; Wed, 11 Oct 2017 18:47:12 -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=7KF/YMXw/3l140JZCyB05e4Rsa5XXlhOD+3AKrV/+1E=; b=qevDXWVY66+bHJA8yggjc4f5rn92r2IqVlBjSz5+B+6Ci0mosdHOdhVNVvvGD1aBfH yV1grtaXM2rXc231XMPR29MqaC25s0lH1IFMnVT7wBkWvovHmFTuzs53r2BJmbl2CHs1 WG1kdAEW+RGolKt+VGUIaox+64EPUnkqRiYtOZ73k/Tl+OWrN2a/ptRIEM8m3MlOS3aV pl5NiEEJjlRU22HfDpWf510PpF5aijG387/sDjOcgNJCJqZ/hNZtRicPnus3Y5OTsLv6 KGlyrrsaPxTWkm3+5hWO6xUOckMcTuQ4YIflx/5E5Wy6O2IrchSEQfqLaLJoXpUa/odF 9m8w== 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=7KF/YMXw/3l140JZCyB05e4Rsa5XXlhOD+3AKrV/+1E=; b=oVqEf6RIb5PeAPqV+B2oOkHMdRSXJQhmGokP7TjseuOo0Yg8KNpl8Vh3rwwhWjy/nl fv8l5A+ELuXdjRakm0D4U6qyuWP1uLwgcCOHIcTv2GYw2AvR2g33gLGUm13U/fJsaVVL X6RJtle0GxIFy8kWLdTPp7djD66mFjcmwvecB7L5GUmDnKr0C1A1rb7kNhJDBE4MlquF vNEXtBTHJ2c80aTukIYz3gh3mQTBnykjH+5EX9ittIfCtwkm4efPRPqn/1hb8HTHf9ME hwjNRaFxJHyczzH9vkadjiTWkZcOk2IcjI3fww0UPg2aW5/BaTQI8QC/exA/Z3rBxbHb 6U8A== X-Gm-Message-State: AMCzsaUBOv+l9psJIpv9xsaHF1HI7wav7BXTqFqZ+wzr6E6SyXE+yj4x S5KNzQAbX/DLrQaCRaneBs0sY9gB X-Google-Smtp-Source: AOwi7QDe7J3R3N5FSQX7XTAABt8R7WZk/22NtFwvUwksPp+ESTgQq6MdHy6m1Y5OhRnCnRNyCkGWJg== X-Received: by 10.101.66.70 with SMTP id d6mr731729pgq.169.1507772831722; Wed, 11 Oct 2017 18:47:11 -0700 (PDT) Received: from fengc.mtv.corp.google.com ([100.98.121.64]) by smtp.gmail.com with ESMTPSA id b27sm22733720pfc.110.2017.10.11.18.47.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 11 Oct 2017 18:47:11 -0700 (PDT) From: Chenbo Feng To: netdev@vger.kernel.org Cc: Jeffrey Vander Stoep , Alexei Starovoitov , lorenzo@google.com, Daniel Borkmann , Stephen Smalley , viro@zeniv.linux.org.uk, James Morris , Paul Moore , Chenbo Feng Subject: [PATCH net-next v4 2/5] bpf: Add tests for eBPF file mode Date: Wed, 11 Oct 2017 18:46:38 -0700 Message-Id: <20171012014641.96818-3-chenbofeng.kernel@gmail.com> X-Mailer: git-send-email 2.15.0.rc0.271.g36b669edcc-goog In-Reply-To: <20171012014641.96818-1-chenbofeng.kernel@gmail.com> References: <20171012014641.96818-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 --- 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)