[{"id":1765512,"web_url":"http://patchwork.ozlabs.org/comment/1765512/","msgid":"<20170908.094918.377842401594545205.davem@davemloft.net>","list_archive_url":null,"date":"2017-09-08T16:49:18","subject":"Re: [PATCH net] ipv6: fix memory leak with multiple tables during\n\tnetns destruction","submitter":{"id":15,"url":"http://patchwork.ozlabs.org/api/people/15/","name":"David Miller","email":"davem@davemloft.net"},"content":"From: Sabrina Dubroca <sd@queasysnail.net>\nDate: Fri,  8 Sep 2017 10:26:19 +0200\n\n> fib6_net_exit only frees the main and local tables. If another table was\n> created with fib6_alloc_table, we leak it when the netns is destroyed.\n> \n> Fix this in the same way ip_fib_net_exit cleans up tables, by walking\n> through the whole hashtable of fib6_table's. We can get rid of the\n> special cases for local and main, since they're also part of the\n> hashtable.\n> \n> Reproducer:\n>     ip netns add x\n>     ip -net x -6 rule add from 6003:1::/64 table 100\n>     ip netns del x\n> \n> Reported-by: Jianlin Shi <jishi@redhat.com>\n> Fixes: 58f09b78b730 (\"[NETNS][IPV6] ip6_fib - make it per network namespace\")\n> Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>\n\nApplied and queued up for -stable, thanks.","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xpjw310q9z9s7h\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat,  9 Sep 2017 02:49:23 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1756365AbdIHQtU (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tFri, 8 Sep 2017 12:49:20 -0400","from shards.monkeyblade.net ([184.105.139.130]:57834 \"EHLO\n\tshards.monkeyblade.net\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1754508AbdIHQtT (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Fri, 8 Sep 2017 12:49:19 -0400","from localhost (74-93-104-98-Washington.hfc.comcastbusiness.net\n\t[74.93.104.98]) (using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(Client did not present a certificate)\n\t(Authenticated sender: davem-davemloft)\n\tby shards.monkeyblade.net (Postfix) with ESMTPSA id E99FA120440D1;\n\tFri,  8 Sep 2017 09:49:18 -0700 (PDT)"],"Date":"Fri, 08 Sep 2017 09:49:18 -0700 (PDT)","Message-Id":"<20170908.094918.377842401594545205.davem@davemloft.net>","To":"sd@queasysnail.net","Cc":"netdev@vger.kernel.org","Subject":"Re: [PATCH net] ipv6: fix memory leak with multiple tables during\n\tnetns destruction","From":"David Miller <davem@davemloft.net>","In-Reply-To":"<204659713af1979c26b8defb2b52e1668b4e5aad.1504859062.git.sd@queasysnail.net>","References":"<204659713af1979c26b8defb2b52e1668b4e5aad.1504859062.git.sd@queasysnail.net>","X-Mailer":"Mew version 6.7 on Emacs 25.2 / Mule 6.0 (HANACHIRUSATO)","Mime-Version":"1.0","Content-Type":"Text/Plain; charset=us-ascii","Content-Transfer-Encoding":"7bit","X-Greylist":"Sender succeeded SMTP AUTH, not delayed by\n\tmilter-greylist-4.5.12 (shards.monkeyblade.net\n\t[149.20.54.216]); Fri, 08 Sep 2017 09:49:19 -0700 (PDT)","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1765556,"web_url":"http://patchwork.ozlabs.org/comment/1765556/","msgid":"<1504893592.15310.80.camel@edumazet-glaptop3.roam.corp.google.com>","list_archive_url":null,"date":"2017-09-08T17:59:52","subject":"Re: [PATCH net] ipv6: fix memory leak with multiple tables during\n\tnetns destruction","submitter":{"id":2404,"url":"http://patchwork.ozlabs.org/api/people/2404/","name":"Eric Dumazet","email":"eric.dumazet@gmail.com"},"content":"On Fri, 2017-09-08 at 10:26 +0200, Sabrina Dubroca wrote:\n> fib6_net_exit only frees the main and local tables. If another table was\n> created with fib6_alloc_table, we leak it when the netns is destroyed.\n> \n> Fix this in the same way ip_fib_net_exit cleans up tables, by walking\n> through the whole hashtable of fib6_table's. We can get rid of the\n> special cases for local and main, since they're also part of the\n> hashtable.\n> \n> Reproducer:\n>     ip netns add x\n>     ip -net x -6 rule add from 6003:1::/64 table 100\n>     ip netns del x\n> \n> Reported-by: Jianlin Shi <jishi@redhat.com>\n> Fixes: 58f09b78b730 (\"[NETNS][IPV6] ip6_fib - make it per network namespace\")\n> Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>\n> ---\n>  net/ipv6/ip6_fib.c | 25 +++++++++++++++++++------\n>  1 file changed, 19 insertions(+), 6 deletions(-)\n> \n> diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c\n> index a3b5c163325f..8280172c806c 100644\n> --- a/net/ipv6/ip6_fib.c\n> +++ b/net/ipv6/ip6_fib.c\n> @@ -191,6 +191,12 @@ void rt6_free_pcpu(struct rt6_info *non_pcpu_rt)\n>  }\n>  EXPORT_SYMBOL_GPL(rt6_free_pcpu);\n>  \n> +static void fib6_free_table(struct fib6_table *table)\n> +{\n> +\tinetpeer_invalidate_tree(&table->tb6_peers);\n> +\tkfree(table);\n> +}\n> +\n>  static void fib6_link_table(struct net *net, struct fib6_table *tb)\n>  {\n>  \tunsigned int h;\n> @@ -2022,15 +2028,22 @@ static int __net_init fib6_net_init(struct net *net)\n>  \n>  static void fib6_net_exit(struct net *net)\n>  {\n> +\tunsigned int i;\n> +\n>  \trt6_ifdown(net, NULL);\n>  \tdel_timer_sync(&net->ipv6.ip6_fib_timer);\n>  \n> -#ifdef CONFIG_IPV6_MULTIPLE_TABLES\n> -\tinetpeer_invalidate_tree(&net->ipv6.fib6_local_tbl->tb6_peers);\n> -\tkfree(net->ipv6.fib6_local_tbl);\n> -#endif\n> -\tinetpeer_invalidate_tree(&net->ipv6.fib6_main_tbl->tb6_peers);\n> -\tkfree(net->ipv6.fib6_main_tbl);\n> +\tfor (i = 0; i < FIB_TABLE_HASHSZ; i++) {\n\nshould not this be FIB6_TABLE_HASHSZ ?\n\n> +\t\tstruct hlist_head *head = &net->ipv6.fib_table_hash[i];\n> +\t\tstruct hlist_node *tmp;\n> +\t\tstruct fib6_table *tb;\n> +\n> +\t\thlist_for_each_entry_safe(tb, tmp, head, tb6_hlist) {\n> +\t\t\thlist_del(&tb->tb6_hlist);\n> +\t\t\tfib6_free_table(tb);\n> +\t\t}\n> +\t}\n> +\n>  \tkfree(net->ipv6.fib_table_hash);\n>  \tkfree(net->ipv6.rt6_stats);\n>  \tfib6_notifier_exit(net);","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"Flxxvb7J\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xplTT2Pwxz9ryk\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat,  9 Sep 2017 03:59:57 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1756615AbdIHR7z (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tFri, 8 Sep 2017 13:59:55 -0400","from mail-pf0-f196.google.com ([209.85.192.196]:32936 \"EHLO\n\tmail-pf0-f196.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1754777AbdIHR7y (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Fri, 8 Sep 2017 13:59:54 -0400","by mail-pf0-f196.google.com with SMTP id h4so1752746pfk.0\n\tfor <netdev@vger.kernel.org>; Fri, 08 Sep 2017 10:59:54 -0700 (PDT)","from ?IPv6:2620:15c:2c1:100:b157:a4c6:2921:1e29?\n\t([2620:15c:2c1:100:b157:a4c6:2921:1e29])\n\tby smtp.googlemail.com with ESMTPSA id\n\tf5sm5332593pfg.128.2017.09.08.10.59.52\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tFri, 08 Sep 2017 10:59:53 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=message-id:subject:from:to:cc:date:in-reply-to:references\n\t:mime-version:content-transfer-encoding;\n\tbh=229jRJPNyxW3a06s47zTM+dZ6GUp6x8oaq+nvHAkxrQ=;\n\tb=Flxxvb7Jm9oWerJ6tkE4awQCL1Z6P0Quyo0pUNBK41dZJ7GSRQgmHwcUhSWc8g6d2E\n\t+MQFVW9jc4mpHcQ7V0osAbX/gW7n90sZ043SMMTImld4AKCGmBLnONTjgXbDHhARBPJp\n\tCDVV2ZyUQ1wgwNYXWHd3JYt4ZjTBmTqfl1V2Ft/+XxOG9tWbUGDZe8mojHo8vHdwH1Cl\n\t7qymga4Oj97mdizvoV3B6z+ysOpULCqVnjx098PqMY1cTmu2jsYj5kr95whYu6m2Pic1\n\tKBQEP+hoTFQH3Dd1x4qjUwkxyYhcL2UFCd4GvhdEDnHL+yoDg8YtyruxBgFrZtygkAEV\n\tUjqA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to\n\t:references:mime-version:content-transfer-encoding;\n\tbh=229jRJPNyxW3a06s47zTM+dZ6GUp6x8oaq+nvHAkxrQ=;\n\tb=GVvVgbz+u8YrAU5IfqPpGhyn+/YXzMwtYf+WRMT1rrC2Elo9kemreMXzkP059LGTHW\n\tZzJ9cbr4wp1vYL9gyTcOq1T6nPb97BHi4ZAJK0+eWdELZC8m1Jc1qolNCgyll3W8XtH2\n\t0SR0Iodwak6a5ZfYDH2ieaeDwohVwNL5db+YBMXxnGmk1XT+wemrhk3pksQ8IUG+8JQv\n\tAnEpUsgfpewGOYUT6NSR68Uipf4Y0oOmXQbMD5WCiDBAGORSUZMSe6GJoieVUgMaQaQj\n\tfeqPX5jlIvQkQeNPSMFOCUIthBN7EUgYwM0iuac7YsUvsAG/UZYk8Rhwj2IFoWq27NVE\n\twTiw==","X-Gm-Message-State":"AHPjjUj4owFc0LCs1eHwsb8X6dorAQ4FYPXSDGuqwTxMZ3uDDNyFHetP\n\tYmak+6Xt9hJqPTBZ","X-Google-Smtp-Source":"ADKCNb5VyUjfNDFV/O5l5labW1ywtnwRUsIwQ7eKgjLm4QtkYN1fNqF+CZvqMF+GSUVSf2nY2ZPd8Q==","X-Received":"by 10.98.10.153 with SMTP id 25mr3947760pfk.254.1504893594116;\n\tFri, 08 Sep 2017 10:59:54 -0700 (PDT)","Message-ID":"<1504893592.15310.80.camel@edumazet-glaptop3.roam.corp.google.com>","Subject":"Re: [PATCH net] ipv6: fix memory leak with multiple tables during\n\tnetns destruction","From":"Eric Dumazet <eric.dumazet@gmail.com>","To":"Sabrina Dubroca <sd@queasysnail.net>","Cc":"netdev@vger.kernel.org","Date":"Fri, 08 Sep 2017 10:59:52 -0700","In-Reply-To":"<204659713af1979c26b8defb2b52e1668b4e5aad.1504859062.git.sd@queasysnail.net>","References":"<204659713af1979c26b8defb2b52e1668b4e5aad.1504859062.git.sd@queasysnail.net>","Content-Type":"text/plain; charset=\"UTF-8\"","X-Mailer":"Evolution 3.10.4-0ubuntu2 ","Mime-Version":"1.0","Content-Transfer-Encoding":"7bit","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1765567,"web_url":"http://patchwork.ozlabs.org/comment/1765567/","msgid":"<CAM_iQpVhPZBzxWoRQzk07bGQ3RMTjeoys+pG=nWPjE2q5cviUA@mail.gmail.com>","list_archive_url":null,"date":"2017-09-08T18:24:35","subject":"Re: [PATCH net] ipv6: fix memory leak with multiple tables during\n\tnetns destruction","submitter":{"id":211,"url":"http://patchwork.ozlabs.org/api/people/211/","name":"Cong Wang","email":"xiyou.wangcong@gmail.com"},"content":"On Fri, Sep 8, 2017 at 1:26 AM, Sabrina Dubroca <sd@queasysnail.net> wrote:\n> fib6_net_exit only frees the main and local tables. If another table was\n> created with fib6_alloc_table, we leak it when the netns is destroyed.\n>\n> Fix this in the same way ip_fib_net_exit cleans up tables, by walking\n> through the whole hashtable of fib6_table's. We can get rid of the\n> special cases for local and main, since they're also part of the\n> hashtable.\n>\n> Reproducer:\n>     ip netns add x\n>     ip -net x -6 rule add from 6003:1::/64 table 100\n>     ip netns del x\n>\n> Reported-by: Jianlin Shi <jishi@redhat.com>\n> Fixes: 58f09b78b730 (\"[NETNS][IPV6] ip6_fib - make it per network namespace\")\n> Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>\n> ---\n>  net/ipv6/ip6_fib.c | 25 +++++++++++++++++++------\n>  1 file changed, 19 insertions(+), 6 deletions(-)\n>\n> diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c\n> index a3b5c163325f..8280172c806c 100644\n> --- a/net/ipv6/ip6_fib.c\n> +++ b/net/ipv6/ip6_fib.c\n> @@ -191,6 +191,12 @@ void rt6_free_pcpu(struct rt6_info *non_pcpu_rt)\n>  }\n>  EXPORT_SYMBOL_GPL(rt6_free_pcpu);\n>\n> +static void fib6_free_table(struct fib6_table *table)\n> +{\n> +       inetpeer_invalidate_tree(&table->tb6_peers);\n> +       kfree(table);\n> +}\n> +\n>  static void fib6_link_table(struct net *net, struct fib6_table *tb)\n>  {\n>         unsigned int h;\n> @@ -2022,15 +2028,22 @@ static int __net_init fib6_net_init(struct net *net)\n>\n>  static void fib6_net_exit(struct net *net)\n>  {\n> +       unsigned int i;\n> +\n>         rt6_ifdown(net, NULL);\n>         del_timer_sync(&net->ipv6.ip6_fib_timer);\n>\n> -#ifdef CONFIG_IPV6_MULTIPLE_TABLES\n> -       inetpeer_invalidate_tree(&net->ipv6.fib6_local_tbl->tb6_peers);\n> -       kfree(net->ipv6.fib6_local_tbl);\n> -#endif\n> -       inetpeer_invalidate_tree(&net->ipv6.fib6_main_tbl->tb6_peers);\n> -       kfree(net->ipv6.fib6_main_tbl);\n> +       for (i = 0; i < FIB_TABLE_HASHSZ; i++) {\n> +               struct hlist_head *head = &net->ipv6.fib_table_hash[i];\n> +               struct hlist_node *tmp;\n> +               struct fib6_table *tb;\n> +\n> +               hlist_for_each_entry_safe(tb, tmp, head, tb6_hlist) {\n> +                       hlist_del(&tb->tb6_hlist);\n\nhlist_del_rcu() ?\n\n\n> +                       fib6_free_table(tb);\n\nkfree_rcu() in fib6_free_table()?\n\n\n> +               }\n> +       }\n> +\n>         kfree(net->ipv6.fib_table_hash);\n>         kfree(net->ipv6.rt6_stats);\n>         fib6_notifier_exit(net);\n> --\n> 2.14.1\n>","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"Mw//UpLd\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xpm2M4jzzz9s7C\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat,  9 Sep 2017 04:24:59 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1756615AbdIHSY5 (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tFri, 8 Sep 2017 14:24:57 -0400","from mail-pf0-f196.google.com ([209.85.192.196]:33868 \"EHLO\n\tmail-pf0-f196.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1756294AbdIHSY4 (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Fri, 8 Sep 2017 14:24:56 -0400","by mail-pf0-f196.google.com with SMTP id g65so1545155pfe.1\n\tfor <netdev@vger.kernel.org>; Fri, 08 Sep 2017 11:24:56 -0700 (PDT)","by 10.100.140.134 with HTTP; Fri, 8 Sep 2017 11:24:35 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc; bh=QDEcbwQjS2YusE2ZRTyIfvRxj81QedpaXZDS+xu1yjI=;\n\tb=Mw//UpLdy1/t7YiE0aVmtZp8y6sFGA8kUoLlWNubUUWlRX//t6vixrZFnn33YLDQWt\n\tntodYGHkjCc58MXHPlRDTEO2uYwEkJz5ws2P+TGFVv2hUXdbm+ealmrGl29/t4yCjrt9\n\t+vZfXpaf+PqIKjrJZZpdy0/jTbfLikoL/O/LxXvTegOIvTTgKCkmAc51NPDImfIxkIRR\n\tBtD1p/f1iZ3tHRsnQk8cAPOVa2Fzd4WeevrLVivACPpzmgx1CTiq07Roz2YjaEBxTPk4\n\tN45ExFhkyylev5+6vdGqaaTY1RdmClgvJTdbQXYJVUlDtKPmGWX+vQ+9moRTHN2lWXwt\n\tspJw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=QDEcbwQjS2YusE2ZRTyIfvRxj81QedpaXZDS+xu1yjI=;\n\tb=iHTyULcy8Voq8kcufI94Z79Hpz8lrjg/JZqoIssseCbqFzXTZn+cvXhb9m0iH1n5Km\n\tIEjhqkTAwBsbgzTHK8nzFPfxEWg2k1tKqoPcKJKAmwd+H15h3gauV006XUlUHwcDv+pb\n\tNxhEehxkbBPj4gF4npnhVWJD/rAbgJt+LaWBWUauLnQfG8/E2Amt7mzkXJK0UKjfLZNt\n\tpnZ3EpkPUwaBeTJMAFTRESFPsmFKl/DkoqxaBFE5B0jXeuoHyDxfnT6G0Sc6oeaiSsVs\n\te+h507h1/1Y5FCenDPY3n99GaF9xhF9n57Gpg4kFnhJWmNsqGNslrS3v6S6UlEibptYl\n\tg0vw==","X-Gm-Message-State":"AHPjjUi35jrCwvgDfBOY2lIEDF+S/Ko1AiWehEzXboBQEVRtKvouvvUa\n\teLFhdX4CZLQxHl1YvvMCJ0nfwVwiHsFN","X-Google-Smtp-Source":"ADKCNb4ohObKbXCNpViHe4U7uZCP9KjtJ3wD4123E3gajk3pWlYkpXzKnRZUsPBXI0GAMvApmKBKVtv1yeKNw5LXKwo=","X-Received":"by 10.101.92.204 with SMTP id b12mr3950726pgt.54.1504895096222; \n\tFri, 08 Sep 2017 11:24:56 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<204659713af1979c26b8defb2b52e1668b4e5aad.1504859062.git.sd@queasysnail.net>","References":"<204659713af1979c26b8defb2b52e1668b4e5aad.1504859062.git.sd@queasysnail.net>","From":"Cong Wang <xiyou.wangcong@gmail.com>","Date":"Fri, 8 Sep 2017 11:24:35 -0700","Message-ID":"<CAM_iQpVhPZBzxWoRQzk07bGQ3RMTjeoys+pG=nWPjE2q5cviUA@mail.gmail.com>","Subject":"Re: [PATCH net] ipv6: fix memory leak with multiple tables during\n\tnetns destruction","To":"Sabrina Dubroca <sd@queasysnail.net>","Cc":"Linux Kernel Network Developers <netdev@vger.kernel.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}}]