Received: by 10.192.165.148 with SMTP id m20csp2107771imm; Sat, 28 Apr 2018 12:23:17 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrf4BkSUZIR5z7CfLs4vMaEgahKaFxtOL74GaJlps5mlR2uGU5g6cBalpvLg4EPHQ/L+xl+ X-Received: by 2002:a63:78c3:: with SMTP id t186-v6mr5859240pgc.97.1524943397703; Sat, 28 Apr 2018 12:23:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524943397; cv=none; d=google.com; s=arc-20160816; b=nEPI57r90gPUAK4qEmB7A/+LK5YxfjNkQ3pQqQjKFlwrF+HlY3y2rQVuHX/WOAWMKK jW/FzTmhq3HZm8I/GOyCfc/KUDJgWjyTobYK6J1kG+XY87F/kcnAkZ786p9+1ufAxNes GGEJUMRIJGe8JkYUb1Y8TmUZl6/5niCtdf2V4b64a5okmAcCxIE6M9b8YO+DWm9/wTx2 QXCbQBzdl19nzk5sOeHwYtHA1IqSHp1ZoRb5CQM+3PTui/hPVkmRQ7HeCWOlCNPGaeOl G1Futqga4wT29O2rq85ggFFjvGYEy4RqQP1JVU+hjhXwtdo2AA12t/1faeTP7mJS04nC sQvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=kmTVJ2sYG/ViKy9Hf7JBN1GZJusI2xLIOaQID71TufQ=; b=w1tnUQXxDVta3lF+i1RDA2LrSF4RCYOqXoh4E7+2PjAeyy/6RbcnkJgAHZcpkbl3Ym CquHN8SDqGbYZwcdaK4MwU8oYmfQISnw94yZJR1Z1M/9UaHcVaDMMpWIMgXC9UIi29U1 jW4aKSynFG0lkGYAS/OiWm8SlRwP9wZzIEoq2v9NzJjg4IclQVuGPUGP7vlmLKTIbTu0 X5LZc6H4AuAU1vqq6+OePMdCFdrTKKhX2ZxEeJc4cj6RVemM1FhYGl9cnVb6Y6KxzCfh BE5xxGh1THiFB1oZR+LBFOPHxfFzDwf50Dr+kpuf7gZO2g61O5Wu76vbpGxwyCTEWg2R LCAQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f35-v6si4051661plh.193.2018.04.28.12.23.03; Sat, 28 Apr 2018 12:23:17 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751618AbeD1TVR (ORCPT + 99 others); Sat, 28 Apr 2018 15:21:17 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:40781 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751268AbeD1TUk (ORCPT ); Sat, 28 Apr 2018 15:20:40 -0400 Received: by mail-wr0-f193.google.com with SMTP id v60-v6so4616294wrc.7; Sat, 28 Apr 2018 12:20:39 -0700 (PDT) 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=kmTVJ2sYG/ViKy9Hf7JBN1GZJusI2xLIOaQID71TufQ=; b=cI1D9GzJw/cDv+aVBCW74igsXjTHruMdgUlJdMSFKkmiZMv8PSgX9lcEnzne/6e0M0 Iepw4g3qtHA2ldgMt1NYa2l8he7gl8uOE2FAS5shtvqAF76IXkU+S6qORXd+gKtbuIMA IRfrMgyhGi+B2s17SNjimBqNuG9gXOksO5R49dYqvWrspoEDuRjLeIrDeR3HngPqF8OO 4gQ6CgpsIXiOiSIPNOyLQilORZdCkuvqBYPNAndPGQu+0e3MN7zdKnWhxqIJ5WJrTwB3 eptuaZUeH4rodFJ6ri8pe9jQGMQgNbHhKFJkLxXmSM44kG9uOYuuVZdYbuScJs9TFjOL 7NyQ== X-Gm-Message-State: ALQs6tBD2Lbkl4LDdPc0u5xd3zA6URq6ducRKJeRpN2TzSiTa3bX+WV8 XWZEaV76Vx1B+nWYdhZjZn1eiFfuvvk= X-Received: by 2002:adf:be90:: with SMTP id i16-v6mr5198012wrh.63.1524943239286; Sat, 28 Apr 2018 12:20:39 -0700 (PDT) Received: from localhost.localdomain ([2a02:8070:8895:9700:b0c9:237:9998:dabc]) by smtp.gmail.com with ESMTPSA id o9-v6sm4450807wrn.74.2018.04.28.12.20.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Apr 2018 12:20:38 -0700 (PDT) From: Christian Brauner To: ebiederm@xmission.com, davem@davemloft.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: avagin@virtuozzo.com, ktkhai@virtuozzo.com, serge@hallyn.com, gregkh@linuxfoundation.org, Christian Brauner Subject: [PATCH net-next 1/2 v4] uevent: add alloc_uevent_skb() helper Date: Sat, 28 Apr 2018 21:20:24 +0200 Message-Id: <20180428192025.2075-2-christian.brauner@ubuntu.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180428192025.2075-1-christian.brauner@ubuntu.com> References: <20180428192025.2075-1-christian.brauner@ubuntu.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch adds alloc_uevent_skb() in preparation for follow up patches. Signed-off-by: Christian Brauner --- v3->v4: * non-functional changes: initialize some variables again explicitly to make it obvious to readers that they are correctly set v2->v3: * new approach: patch added v1->v2: * different approach in different patchset v0->v1: * different approach in different patchset --- lib/kobject_uevent.c | 47 ++++++++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index 15ea216a67ce..649bf60a9440 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -296,6 +297,38 @@ static void cleanup_uevent_env(struct subprocess_info *info) } #endif +#ifdef CONFIG_NET +static struct sk_buff *alloc_uevent_skb(struct kobj_uevent_env *env, + const char *action_string, + const char *devpath) +{ + struct netlink_skb_parms *parms; + struct sk_buff *skb = NULL; + char *scratch; + size_t len; + + /* allocate message with maximum possible size */ + len = strlen(action_string) + strlen(devpath) + 2; + skb = alloc_skb(len + env->buflen, GFP_KERNEL); + if (!skb) + return NULL; + + /* add header */ + scratch = skb_put(skb, len); + sprintf(scratch, "%s@%s", action_string, devpath); + + skb_put_data(skb, env->buf, env->buflen); + + parms = &NETLINK_CB(skb); + parms->creds.uid = GLOBAL_ROOT_UID; + parms->creds.gid = GLOBAL_ROOT_GID; + parms->dst_group = 1; + parms->portid = 0; + + return skb; +} +#endif + static int kobject_uevent_net_broadcast(struct kobject *kobj, struct kobj_uevent_env *env, const char *action_string, @@ -314,22 +347,10 @@ static int kobject_uevent_net_broadcast(struct kobject *kobj, continue; if (!skb) { - /* allocate message with the maximum possible size */ - size_t len = strlen(action_string) + strlen(devpath) + 2; - char *scratch; - retval = -ENOMEM; - skb = alloc_skb(len + env->buflen, GFP_KERNEL); + skb = alloc_uevent_skb(env, action_string, devpath); if (!skb) continue; - - /* add header */ - scratch = skb_put(skb, len); - sprintf(scratch, "%s@%s", action_string, devpath); - - skb_put_data(skb, env->buf, env->buflen); - - NETLINK_CB(skb).dst_group = 1; } retval = netlink_broadcast_filtered(uevent_sock, skb_get(skb), -- 2.17.0