From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753181AbdK3NoY (ORCPT ); Thu, 30 Nov 2017 08:44:24 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:37332 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752734AbdK3Nn7 (ORCPT ); Thu, 30 Nov 2017 08:43:59 -0500 From: Roman Gushchin To: CC: , , , , , , Subject: [PATCH net-next 4/5] bpftool: implement cgdetach command Date: Thu, 30 Nov 2017 13:43:01 +0000 Message-ID: <20171130134302.2840-5-guro@fb.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171130134302.2840-1-guro@fb.com> References: <20171130134302.2840-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:638c] X-ClientProxiedBy: VI1PR0602CA0010.eurprd06.prod.outlook.com (2603:10a6:800:bc::20) To CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5159bca3-3293-4460-8ca2-08d537f85c92 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603286);SRVR:CO1PR15MB1079; X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1079;3:E1EoOqxPwHpR1eyAp3gg/1Q+uIN4SxMOTsCphSP9+DvzNdHFbEuByPrMsUGw+6Scx2S2Dzd73Jd03/45789J/GfFEaHdZSbFzm38rTk7tvny3cj3y+hBwnXxllx32Q8w66igZQRExWXe/g8kWLE8xKLhtqsfZJxp6QYokU3SeuPBX6YvAbH7I5o9L/TI8YZNDtjL+cAZ2Q6fSYuXzQ0LT3w4/Sqb2aj0WuOUgMwfkDFbY5k4g2x7Z7Z2fIK+7o7F;25:fapeOG5EOygsn+Fr4QVnY1t4oxEyME8ga5uiLNFo0vJjyg/eaDke+yC1wtVr9/pi6IuHpo6mhU9nV6wgqOy28D6sQX4eXE3ydDTXxIxe493DqfPhsxV7ZPeEHZ2mOInOWXdyXlZNazoqO0fqyskBNg3fPFRToCtNzinTFmSLwyFuCOUGPNFgdx5yNh/TioCfJZSFOTFisDEy6/rd2AVjWDgRJ1PaV09aOdSpbQ+gJCQSFki6zH/zCj7Yrb6kVXPD3WNxrQZrfEPWrqf6ol8lYBGMfk4asmzv1kcF0BHSlfGhvb0L6Bh/MC9uM36HEgvjF5vZNCE8HBCkH7T7gJPUgQ==;31:N2gBOkLYkIak7hfmQH/T8QdRgYadirQNFz62WGD7uGL7OKp1Nw0cHkOee1wm7/sk5utfbp+FdwNBspFVJiS5tr3yBkyjjOM10+bWu1lCezlSVuQ5nimuhPlPLge11XyQvgadGxYpTe/g7UeEYyvnpNMnuALd9Xx6qmnxzBGWHLAeglEc/iG9WUReg8+ldCmsH2bTzrfPK9kcXDHRheCcOB5Foh1CABwT+jXIgy6r1eU= X-MS-TrafficTypeDiagnostic: CO1PR15MB1079: X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1079;20:SEemWkSqsdDTBlLxpLqJgFXyS9k0ZvRLdfqR/VYNqG6mbAY8um2SGCgwFlfYWhZTorlBF1TNhGJitVA2c9cG4yH6lVXz018PusLJ7JCevNl9ZsCl/169qZsh1qopKDgOaEwzNpRsd3XopEQz9a3audxpDMbQmKF99EG+GndyzBgeb04Xi65UziNFEz/fu5i+ZZCu8MkCON2lahGp7g3PB5mfvkbK3XZyHxssYhk/1GddFLdlcQssJrfcePPv5YZx/ZyW5lpXrk5RbpW4AaEDCW4X+hcKrge5xBAomDKagxqFOzPuruOtQoAADUfEOG/N7H3SkcxvIAR18KlFR/mTE5IsrwugdG3H0UgpoD0yZ+eQS+ki50145kKXXptR0AXKm3yMlh+atx68iQakOkbE/odm35Gx6Gzpzbu0M1jXjJPYEYMg05whJh2NOKxK/2UMjFDm2KeIh4NufoHEFcXD0/3Zl/gX8dXA0Xc6ijo4ZYV79EpwDLq6OwwiOWMHWjJS;4:DdsWgCEVVDp7ajQfiTmI34r7mgh0qNrU4EHHJscsRlBs/FuoqmpQG3sGfdejgZm7bJnQMasndVOcqVtB3E7WPlHFCS862uwij/IfDhfGm5FMjRrqcRHN9YPsdvdJhZH4PgiINqvEDbkfbB1/cP4A36HyOTdV6Y+jmyKpTvRhUeaFn5BnZzRaIDy7IBHiShzCapaOwx5DrwN3qhv9X5V9ldCeux/To1qYLUSrhYzl3gwpTgwJiXbTYifsSK+a6MZeACeh7WBHH8iUNkIgECd2ZcOcAg20lGlujgg37OqTRMZ8XCYDcD1CPnIMhEvb8zOF X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(11241501159)(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231022)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(201708071742011);SRVR:CO1PR15MB1079;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:CO1PR15MB1079; X-Forefront-PRVS: 05079D8470 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(979002)(6009001)(376002)(346002)(366004)(199003)(189002)(68736007)(48376002)(575784001)(53416004)(86362001)(478600001)(189998001)(50466002)(52396003)(52116002)(39060400002)(53936002)(2906002)(50986010)(6116002)(81156014)(81166006)(51416003)(1076002)(8676002)(8936002)(76176010)(5890100001)(50226002)(97736004)(105586002)(2361001)(2351001)(5660300001)(6512007)(101416001)(7736002)(305945005)(6486002)(4326008)(6506006)(25786009)(106356001)(69596002)(6666003)(33646002)(2950100002)(6916009)(36756003)(47776003)(316002)(16586007)(42262002)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1102;SCL:1;SRVR:CO1PR15MB1079;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CO1PR15MB1079;23:SLg/8UpxkGLqIS7TZf8h5V4dr1DF59EPI9Qvct9GL?= =?us-ascii?Q?gAOaoQiGSqbaDbFDDnb5cd1+afBgbmsPR7A40/eJOiP3GIigCL7N+1HrBwyJ?= =?us-ascii?Q?If8aV3hBklQQNtVOj+gGzqlC7Kt5SipWh5+v+6hLV8oA0gzK+9JdxXvydywn?= =?us-ascii?Q?QYQKYmTQm8cwujDNVDj5jwstXuV9fAuH/Z0aZdQ37qxwHol3GRcKX9qie34N?= =?us-ascii?Q?tgund5eapmG+ujgrOjO1/czcH1nTUM4gWE4Q/Sp9dFsvSmUZOx3LgXpoGDPE?= =?us-ascii?Q?FHvSGTQEvzynZmRrCxWdnsfl3eAj5+0MyrSZji2DJWlf4i4Lipz1N5T6v5S7?= =?us-ascii?Q?6JfwrD8rTyuJQob3c+klgUrMkvl2D+NuM/dZfLc/vebzWiGOfqKtGjijaK9S?= =?us-ascii?Q?CTm1OuZelj4PtosiioaBRoNnkrrQyx/2L9pNm2PuPjB4ELIhXjY/osas73gG?= =?us-ascii?Q?y0XBXnXfB4ZFZStYyArOR8W82vOAVb+GlfJZwZ/fqfV4qZd3mrSTzpjIXYf+?= =?us-ascii?Q?KXtmPijQBaHgBAyBMGUWMPBGfoUw4PO4m/ZFcMOhUnqiUwFUTHY7M7c+azWQ?= =?us-ascii?Q?FpadpU1GNomDrY7U+gkkw63b7WFFDY1UmPVcDBBIJFuFsUBJWqzRXh1dXRco?= =?us-ascii?Q?h717/lbErfxTnc5shGUMDkIn6t0SoIGdcBPuy6Z4S8ZK5hJak2FMTyNs+owk?= =?us-ascii?Q?4BDZZEWOnnvy5eut55rxy7STjeHaPqX1p48h7Itrm3Vy/C4jGIfNrWxIarfp?= =?us-ascii?Q?A8p4i18t8T+8xuSErPK53JPIvdR+X+4jfMnuYpu0xKJ+SFBhbyID7mjbHY0H?= =?us-ascii?Q?LdwWgJp6ElTUEytPPn2jzY6RL2pBucQoGodY9IiG68F3uWBClbNHSvk/e1UP?= =?us-ascii?Q?hF4emBsuIMXw1GsTBBzpZyqcfMJyDyrvo1ENwZvPIULy8aH0dqupJ2JHR2hw?= =?us-ascii?Q?6nr+bhxWiWWJeOxhOQhkfxzpjUjLnyRVYDYlTza2o/pK/gU4QhODkyQNvjgo?= =?us-ascii?Q?cNCS4ItgWsMv5jQj+XsSNlT1cSrHlDq/NIgWZrPJeAKioZu6/Ap9whfgOvx+?= =?us-ascii?Q?8Bn++vUREkWkhCwr8RWFzXhSPLEfwU7W2kkOVCdArndQuZYsdlPd604wgrb4?= =?us-ascii?Q?lt34KVQcQBgGE/f29z+MZ9t5c7yoqCKyd2HSTNDAeCsdJVfco763O9n71jck?= =?us-ascii?Q?BJ1M59SjmlT9TPE9U+Dv5OZGXsW37cBwLhiGk6224NgYio9sw6chcP6gr2rI?= =?us-ascii?Q?bWXyufmv5hV71f9wa6jXNbxHK7Cp3ggVyQLHmlBTuk49Gi1vEwssl9fRG3OA?= =?us-ascii?Q?WsohvdqU1J2xL5CUdhh+UWk0F1K5YkroG6K+FI2c2jP9zxJvFm4RJMh3TVBk?= =?us-ascii?Q?sOsyg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1079;6:4nDMYHZIyqSmkY+TzwCFufhKReKUTIEqL+KThn2akyhVl6uzK61cWCB6bE0QOoDJgOpTseJSip67Hd1MuCML7f5j8ULui9kK0JmtkJzex5UmHoOwG7Co1jzqzgBjRD96TdUhD+78V4OCEbwGnkdMVrj6xRNIJwhXMY9Z0MctU4EdHOkXqX33vuO0daUOKZ//+LExq8n0OORXKu2MdcYEDROMH2CRaicboE4oq7n2aArYrfbRSDrliytfr/S/EQVUFpr2hQ2qp5rkqOPyxSfvbIIJjwiW1CU3aCFDRqAhfbI4A72RR9N3D8noNL4tJDxnsMh/vA3vEx/uMsgI7c77Nlsi6juwWQGlv4x3tnL4Stk=;5:x321q47XXo5ccNEe7HH0QB0DsZ30p6jiptG49j+h0UUPHcsymL2Tvxx3hZhHc4h0GepuLM+doyFV32R1q2e61JMNRjNxnJnvHVEUUYFWQtcikWf8FZvoE2QiZNx1TtvgrLZaro/UHo9LhXfgqx0vaUA5nrnCMNWXoRBvLbrZgpM=;24:kU+X62ZF3yb4EpZ2LUlYDU47ZQGPSi0+gM1bCvb77w/OXZgXbKMdgDgSfkEPeNvKCtvjQBF9lTTtUUgi8PWNt157gYWQjPDF3kje1/upbCo=;7:pANZcHZl/QbdKeMebwGzfVGXalR9/LMinTpbOFXiycOegts+yWtO+mDCo0nALraXVIvBQr5KPjGMqyhbP4/spmOTTdUFR/7dRqg2NTLnrdRPpfdMdxQErjzZVZjuApzJ3J2GfrH8hGf116aj/D6rhL1JYSSxOSSjaGr2wNgwDlgQOm0qAaHEC/4XqoFm2n96MhcrUUnSqJFCMWAfhxdt1nlCMQkEF3o1yeY32NxCO4I2qhcA63DeccBUDQd1P7UD SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1079;20:s8vjM7w6u9HhWmLmaSxCvTVK9RDy5iYofryjjg1hagyzDqdwC6vwWNgOZfGXospF/KBxPGVHPy3sj7nktAMrdBAIUYtW+tJIucH5d2HXwfmZCKyVIdQbpHom/T4GNqKYqhSVOzbINg4gd7lE2/H5qg3ryYejbTw9wxWEuWfM1Ok= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2017 13:43:36.7161 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5159bca3-3293-4460-8ca2-08d537f85c92 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR15MB1079 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-11-30_04:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Implement cgdetach command, which allows to detach the bpf program from a cgroup. It takes program id and attach type as arguments. Example: $ ./bpftool cgdetach /sys/fs/cgroup/user.slice/ device 1 Signed-off-by: Roman Gushchin Cc: Alexei Starovoitov Cc: Daniel Borkmann Cc: Jakub Kicinski Cc: Martin KaFai Lau --- tools/bpf/bpftool/main.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c index 8eb3b9bf5bb2..77fcc1a0bd5d 100644 --- a/tools/bpf/bpftool/main.c +++ b/tools/bpf/bpftool/main.c @@ -81,12 +81,13 @@ static int do_help(int argc, char **argv) "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" " %s batch file FILE\n" " %s cgattach FILE CGROUP TYPE\n" + " %s cgdetach CGROUP TYPE ID\n" " %s version\n" "\n" " OBJECT := { prog | map }\n" " " HELP_SPEC_OPTIONS "\n" "", - bin_name, bin_name, bin_name, bin_name); + bin_name, bin_name, bin_name, bin_name, bin_name); return 0; } @@ -166,6 +167,7 @@ void fprint_hex(FILE *f, void *arg, unsigned int n, const char *sep) static int do_batch(int argc, char **argv); static int do_cgattach(int argc, char **argv); +static int do_cgdetach(int argc, char **argv); static const struct cmd cmds[] = { { "help", do_help }, @@ -173,6 +175,7 @@ static const struct cmd cmds[] = { { "prog", do_prog }, { "map", do_map }, { "cgattach", do_cgattach }, + { "cgdetach", do_cgdetach }, { "version", do_version }, { 0 } }; @@ -338,6 +341,51 @@ static int do_cgattach(int argc, char **argv) return 0; } +static int do_cgdetach(int argc, char **argv) +{ + int prog_fd, cgroup_fd; + enum bpf_attach_type attach_type; + + if (argc < 3) { + p_err("too few parameters for cgdetach\n"); + return -1; + } else if (argc > 3) { + p_err("too many parameters for cgdetach\n"); + return -1; + } + + cgroup_fd = open(argv[0], O_RDONLY); + if (cgroup_fd < 0) { + p_err("can't open cgroup %s\n", argv[1]); + return -1; + } + + attach_type = parse_attach_type(argv[1]); + if (attach_type == __MAX_BPF_ATTACH_TYPE) { + close(cgroup_fd); + p_err("Invalid attach type"); + return -1; + } + + prog_fd = bpf_prog_get_fd_by_id(atoi(argv[2])); + if (prog_fd < 0) { + p_err("invalid program id\n"); + return -1; + } + + if (bpf_prog_detach2(prog_fd, cgroup_fd, attach_type)) { + close(prog_fd); + close(cgroup_fd); + p_err("Failed to attach program"); + return -1; + } + + close(prog_fd); + close(cgroup_fd); + + return 0; +} + int main(int argc, char **argv) { static const struct option options[] = { -- 2.14.3