Received: by 10.192.165.148 with SMTP id m20csp2641597imm; Sun, 29 Apr 2018 03:48:15 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqZzIFCoXBtx/nmBswblIKKXOFU/paudTwtXtm5hAI655LUMddfTAGXBEGFXhuMBHETGnf7 X-Received: by 2002:a63:69c4:: with SMTP id e187-v6mr7256567pgc.415.1524998894973; Sun, 29 Apr 2018 03:48:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524998894; cv=none; d=google.com; s=arc-20160816; b=mdHhjO27pkFDF2sqJQfo+18oExKyRIVbL1xvEw4/aY1DA+1R+m8VHh80EWlfhpJCPE hUl+T0nUfvZxWP9OKVfeOzRkfM/Kn1JQqhY1WmMT6b7Sxsftgpc9xVx5+d+1PgB9K0r8 3B6QxYIeK9E1NV7xp9FVSbzNArq9KbcsLHcA4dOoZ13C1ODnsDtMp0npTeCi4YacQbOO qVJZTpZvl7UR8f9hn94c1ieFA1euc+0CXqd6LKds+TLbaA5G0fu8q9styTprYmI3lg9X 43regZ3C/thlCiAXecxcCaklgM76kYfAFBcYI1YQVAIMy2uY4pZAUEkfR+pW7mi4YnD4 KmxQ== 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=OdIYny+LHErRkV+rZrFhIk3cpM7rLK52cLkASjRFWRo=; b=gvUNbdJenwn3Wf5XEB3q4sZkIs9Wc6nGuRtSvKR7xOd3wraNkBwx09s3KauGzgRUnq v9epfQJcaZdIo8fWvrSP7EuZiogv6iLrQ31eToQjVU0pMR8VAgCI10yOXLXu2zuyy6nx Ff4Q5mdkaH3/UMnoNaRCalVLRRWIU2XirhIxCvSbo96d77kXjzfSUwW2b9VUk59R+EL4 RJyMWh7pWASf4BUdvkaupLr4dUnsofeGTkLJ0VHXfwPU6p23URUw0oMK1g8tYwFroUHN ZQ7qm+9YJ/FeHzz3n7gofVRWmZQX/A71X6tqZN5mfBbly18RKG2pi/WXpey0Ld47nxum ufTw== 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 t7-v6si4652048pgo.686.2018.04.29.03.48.00; Sun, 29 Apr 2018 03:48:14 -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 S1753407AbeD2KpK (ORCPT + 99 others); Sun, 29 Apr 2018 06:45:10 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:35309 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752875AbeD2Kob (ORCPT ); Sun, 29 Apr 2018 06:44:31 -0400 Received: by mail-wr0-f195.google.com with SMTP id i14-v6so2338385wre.2; Sun, 29 Apr 2018 03:44:30 -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=OdIYny+LHErRkV+rZrFhIk3cpM7rLK52cLkASjRFWRo=; b=KY6MKUTrowYS3ErxN+5JF2mmwKUmIZt6654mDZBUe9UIQeAyzdmqvE14Hvk5F7aIqK xFQmvFjYtQpcdJ0KmwjyWVoy8fbWZoAh5xZoYA/QUu8BF5btJwEc2mC96DA8TDxqKjwv Ztu3Y+/XNYRZ+wj7gaJPepC8wzyZ0vAyGsm2azmHEb2lPp8bVpyIc4Wu1Q7aNp5BGmUs A9/Kt/FRX8u1MPQfFanr8tKuYrpO3YftyDR5qt1d4HEX+8/SeTIb5WI/GGnjc4eJrNMd MTyfB2+R77FAMeScHaBv1rbI1GMjYbqMEfeMqZ7F1Zj2YSu4oCFqWKAgoe+t2TfCE6Gm JUig== X-Gm-Message-State: ALQs6tCncOY3LqdycOVhYf1kidQajmYOQHcgSBiFcSw9bu5pAy63qdgw NEmq7k96XD/NwnCxDre7Njw= X-Received: by 2002:adf:88b6:: with SMTP id f51-v6mr5739514wrf.55.1524998670295; Sun, 29 Apr 2018 03:44:30 -0700 (PDT) Received: from localhost.localdomain ([2a02:8070:8895:9700:b0c9:237:9998:dabc]) by smtp.gmail.com with ESMTPSA id g78sm1639531wmc.27.2018.04.29.03.44.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 29 Apr 2018 03:44:29 -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 v5] uevent: add alloc_uevent_skb() helper Date: Sun, 29 Apr 2018 12:44:11 +0200 Message-Id: <20180429104412.22445-2-christian.brauner@ubuntu.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180429104412.22445-1-christian.brauner@ubuntu.com> References: <20180429104412.22445-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 --- v4->v5: * patch unchanged 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