Show a cover letter.

GET /api/1.2/covers/831008/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 831008,
    "url": "http://patchwork.ozlabs.org/api/1.2/covers/831008/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/cover/20171027012443.3306-1-xiyou.wangcong@gmail.com/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/7/?format=api",
        "name": "Linux network development",
        "link_name": "netdev",
        "list_id": "netdev.vger.kernel.org",
        "list_email": "netdev@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20171027012443.3306-1-xiyou.wangcong@gmail.com>",
    "list_archive_url": null,
    "date": "2017-10-27T01:24:27",
    "name": "[net,00/16] net_sched: fix races with RCU callbacks",
    "submitter": {
        "id": 211,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/211/?format=api",
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netdev/cover/20171027012443.3306-1-xiyou.wangcong@gmail.com/mbox/",
    "series": [
        {
            "id": 10472,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/10472/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=10472",
            "date": "2017-10-27T01:24:27",
            "name": "net_sched: fix races with RCU callbacks",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/10472/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/831008/comments/",
    "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=\"cxRE1s9L\"; dkim-atps=neutral"
        ],
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3yNR4w2mt4z9t2h\n\tfor <patchwork-incoming@ozlabs.org>;\n\tFri, 27 Oct 2017 12:25:04 +1100 (AEDT)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751950AbdJ0BZA (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tThu, 26 Oct 2017 21:25:00 -0400",
            "from mail-pf0-f193.google.com ([209.85.192.193]:46864 \"EHLO\n\tmail-pf0-f193.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751932AbdJ0BY6 (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Thu, 26 Oct 2017 21:24:58 -0400",
            "by mail-pf0-f193.google.com with SMTP id p87so3778772pfj.3\n\tfor <netdev@vger.kernel.org>; Thu, 26 Oct 2017 18:24:57 -0700 (PDT)",
            "from tw-172-25-30-113.office.twttr.net ([8.25.197.25])\n\tby smtp.gmail.com with ESMTPSA id\n\tb16sm13211973pfe.58.2017.10.26.18.24.56\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tThu, 26 Oct 2017 18:24:56 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=from:to:cc:subject:date:message-id;\n\tbh=qn6cDlsaHrONIs6tM+oQ+2hadKLkEan9c1MEARDYd0E=;\n\tb=cxRE1s9L1IlRRPjhNLOYn6kJtEpY0ukDzJs4/GcDlkCgLZJt31bXdyVV0UtCW9R66z\n\ta1cXFqHvvuf+NdZzLpOkEqrHqUo4VDTfLSNtFMjH3e/Ll3FSBmAPDbqjlugUdPxCfymV\n\teB1umEzW/nTzLKclMMj8snCn48TdFaYCC/IPVdYuYcVsYvvv77Gl+17lPWT875cIISNp\n\trRFtzgr0Ejrkxr8RDd/+kKd1qpotDk8K5xbzT1VyYY1HZXyZUmtiuhjulCUF8nzGnEBk\n\t3+ttKTqEecWYu1gZB12Oiu4J9M8y210a6CDZhRbVqfKoANBLoFUrWDpjMZmJxht2pbfl\n\tNksQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id;\n\tbh=qn6cDlsaHrONIs6tM+oQ+2hadKLkEan9c1MEARDYd0E=;\n\tb=ia29ztmsvBxwQzc2MUNDHhrAv8Ls8nempmRAeyai3WqDulllFgGabfkbvpDSIjDS70\n\t2O48EfVs8Vemc6BZaVSyyQg2IyqHugI9WdKWdqBWMy3+gYET0dvA6RinIsMUPNqokVEl\n\tisCiNt8IPi3k+okcdDusKvxA6VY0hJkygTnxnAhzhAA9V118Za4eqDf5TkjeOqZUTA/Q\n\tKDQxZoIaGQQ82p0gjq+AInbzMJ0TCZf2LqG6tG85Pui5Jtmgrzj2P86JLqEgmHRizfxI\n\tqXr+0QCN+pg9i7bzq0LInR+SFJnxJj7xVmqT5Q1Oa9JHOHfkXCp52ULDH9zSws5cuqYe\n\tnRQg==",
        "X-Gm-Message-State": "AMCzsaXE36M1IM9b1FLELLCdkbRcPoV8pRahG8Dkm/jJoqea1Lrz+8f5\n\tRfa/qTXPe8iYz5yrfr8pcQhHCRw2",
        "X-Google-Smtp-Source": "ABhQp+RXZnE6GtLG+5S06rnHXtpYa2rFGdeMYMdBoWl4IqK9dJwHNdq7WWP8RaT3+LpAo3UXl9EvZQ==",
        "X-Received": "by 10.99.185.18 with SMTP id z18mr6785219pge.212.1509067497315; \n\tThu, 26 Oct 2017 18:24:57 -0700 (PDT)",
        "From": "Cong Wang <xiyou.wangcong@gmail.com>",
        "To": "netdev@vger.kernel.org",
        "Cc": "Chris Mi <chrism@mellanox.com>, Cong Wang <xiyou.wangcong@gmail.com>,\n\tDaniel Borkmann <daniel@iogearbox.net>, Jiri Pirko <jiri@resnulli.us>,\n\tJohn Fastabend <john.fastabend@gmail.com>,\n\tJamal Hadi Salim <jhs@mojatatu.com>,\n\t\"Paul E. McKenney\" <paulmck@linux.vnet.ibm.com>",
        "Subject": "[Patch net 00/16] net_sched: fix races with RCU callbacks",
        "Date": "Thu, 26 Oct 2017 18:24:27 -0700",
        "Message-Id": "<20171027012443.3306-1-xiyou.wangcong@gmail.com>",
        "X-Mailer": "git-send-email 2.9.4",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "Recently, the RCU callbacks used in TC filters and TC actions keep\ndrawing my attention, they introduce at least 4 race condition bugs:\n\n1. A simple one fixed by Daniel:\n\ncommit c78e1746d3ad7d548bdf3fe491898cc453911a49\nAuthor: Daniel Borkmann <daniel@iogearbox.net>\nDate:   Wed May 20 17:13:33 2015 +0200\n\n    net: sched: fix call_rcu() race on classifier module unloads\n\n2. A very nasty one fixed by me:\n\ncommit 1697c4bb5245649a23f06a144cc38c06715e1b65\nAuthor: Cong Wang <xiyou.wangcong@gmail.com>\nDate:   Mon Sep 11 16:33:32 2017 -0700\n\n    net_sched: carefully handle tcf_block_put()\n\n3. Two more bugs found by Chris:\nhttps://patchwork.ozlabs.org/patch/826696/\nhttps://patchwork.ozlabs.org/patch/826695/\n\nUsually RCU callbacks are simple, however for TC filters and actions,\nthey are complex because at least TC actions could be destroyed\ntogether with the TC filter in one callback. And RCU callbacks are\ninvoked in BH context, without locking they are parallel too. All of\nthese contribute to the cause of these nasty bugs.\n\nAlternatively, we could also:\n\na) Introduce a spinlock to serialize these RCU callbacks. But as I\nsaid in commit 1697c4bb5245 (\"net_sched: carefully handle\ntcf_block_put()\"), it is very hard to do because of tcf_chain_dump().\nPotentially we need to do a lot of work to make it possible (if not\nimpossible).\n\nb) Just get rid of these RCU callbacks, because they are not\nnecessary at all, callers of these call_rcu() are all on slow paths\nand holding RTNL lock, so blocking is allowed in their contexts.\nHowever, David and Eric dislike adding synchronize_rcu() here.\n\nAs suggested by Paul, we could defer the work to a workqueue and\ngain the permission of holding RTNL again without any performance\nimpact, however, in tcf_block_put() we could have a deadlock when\nflushing workqueue while hodling RTNL lock, the trick here is to\ndefer the work itself in workqueue and make it queued after all\nother works so that we keep the same ordering to avoid any\nuse-after-free. Please see the first patch for details.\n\nPatch 1 introduces the infrastructure, patch 2~12 move each\ntc filter to the new tc filter workqueue, patch 13 adds\nan assertion to catch potential bugs like this, patch 14\ncloses another rcu callback race, patch 15 and patch 16 add\nnew test cases.\n\nReported-by: Chris Mi <chrism@mellanox.com>\nCc: Daniel Borkmann <daniel@iogearbox.net>\nCc: Jiri Pirko <jiri@resnulli.us>\nCc: John Fastabend <john.fastabend@gmail.com>\nCc: Jamal Hadi Salim <jhs@mojatatu.com>\nCc: \"Paul E. McKenney\" <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Cong Wang <xiyou.wangcong@gmail.com>\n\nChris Mi (2):\n  selftests: Introduce a new script to generate tc batch file\n  selftests: Introduce a new test case to tc testsuite\n\nCong Wang (14):\n  net_sched: introduce a workqueue for RCU callbacks of tc filter\n  net_sched: use tcf_queue_work() in basic filter\n  net_sched: use tcf_queue_work() in bpf filter\n  net_sched: use tcf_queue_work() in cgroup filter\n  net_sched: use tcf_queue_work() in flow filter\n  net_sched: use tcf_queue_work() in flower filter\n  net_sched: use tcf_queue_work() in fw filter\n  net_sched: use tcf_queue_work() in matchall filter\n  net_sched: use tcf_queue_work() in u32 filter\n  net_sched: use tcf_queue_work() in route filter\n  net_sched: use tcf_queue_work() in rsvp filter\n  net_sched: use tcf_queue_work() in tcindex filter\n  net_sched: add rtnl assertion to tcf_exts_destroy()\n  net_sched: fix call_rcu() race on act_sample module removal\n\n include/net/pkt_cls.h                              |  3 +\n include/net/sch_generic.h                          |  2 +\n net/sched/act_sample.c                             |  1 +\n net/sched/cls_api.c                                | 69 ++++++++++++++++------\n net/sched/cls_basic.c                              | 20 ++++++-\n net/sched/cls_bpf.c                                | 19 +++++-\n net/sched/cls_cgroup.c                             | 22 +++++--\n net/sched/cls_flow.c                               | 19 +++++-\n net/sched/cls_flower.c                             | 19 +++++-\n net/sched/cls_fw.c                                 | 19 +++++-\n net/sched/cls_matchall.c                           | 19 +++++-\n net/sched/cls_route.c                              | 19 +++++-\n net/sched/cls_rsvp.h                               | 19 +++++-\n net/sched/cls_tcindex.c                            | 38 ++++++++++--\n net/sched/cls_u32.c                                | 29 ++++++++-\n .../tc-testing/tc-tests/filters/tests.json         | 23 +++++++-\n tools/testing/selftests/tc-testing/tdc.py          | 20 +++++--\n tools/testing/selftests/tc-testing/tdc_batch.py    | 62 +++++++++++++++++++\n tools/testing/selftests/tc-testing/tdc_config.py   |  2 +\n 19 files changed, 367 insertions(+), 57 deletions(-)\n create mode 100755 tools/testing/selftests/tc-testing/tdc_batch.py"
}