get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/56527/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 56527,
    "url": "https://patches.dpdk.org/api/patches/56527/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20190716172057.21110-1-stephen@networkplumber.org/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20190716172057.21110-1-stephen@networkplumber.org>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190716172057.21110-1-stephen@networkplumber.org",
    "date": "2019-07-16T17:20:57",
    "name": "[RFC,v3] net/memif: allow for full key size in socket name",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "68d21e2e975c18270d19e666957db326f01e641c",
    "submitter": {
        "id": 27,
        "url": "https://patches.dpdk.org/api/people/27/?format=api",
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20190716172057.21110-1-stephen@networkplumber.org/mbox/",
    "series": [
        {
            "id": 5537,
            "url": "https://patches.dpdk.org/api/series/5537/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=5537",
            "date": "2019-07-16T17:20:57",
            "name": "[RFC,v3] net/memif: allow for full key size in socket name",
            "version": 3,
            "mbox": "https://patches.dpdk.org/series/5537/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/56527/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/56527/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 2CC384C94;\n\tTue, 16 Jul 2019 19:21:02 +0200 (CEST)",
            "from mail-pg1-f196.google.com (mail-pg1-f196.google.com\n\t[209.85.215.196]) by dpdk.org (Postfix) with ESMTP id A03404C8D\n\tfor <dev@dpdk.org>; Tue, 16 Jul 2019 19:21:00 +0200 (CEST)",
            "by mail-pg1-f196.google.com with SMTP id u17so9765667pgi.6\n\tfor <dev@dpdk.org>; Tue, 16 Jul 2019 10:21:00 -0700 (PDT)",
            "from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127])\n\tby smtp.gmail.com with ESMTPSA id\n\tj16sm16711463pjz.31.2019.07.16.10.20.58\n\t(version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);\n\tTue, 16 Jul 2019 10:20:58 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=networkplumber-org.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references\n\t:mime-version:content-transfer-encoding;\n\tbh=HEINuNFqMWTsW9gbTE/5q3ofvnAYV9WixCk6bGtLaDE=;\n\tb=SwcY5EaKxVWTNVgp+WyJxLRt0omtKhSMyHZ6dKkSaW0zTQ0gZSANBkZb5mE6MAgsrG\n\tmbRJGH6U7mku0pEyazUbFIqCwc4PRoMdD/qetaSmFL23RM6yhElCBLEiEe2h+SwqCPTr\n\tkyE9liOaYUjlN+GUNvoJmESCTCWhQnUoqK39CWCAp8QoPRbwGAxE+96/d/5ZcRmdu7Yd\n\tl3id3DQZHF05i8YLF6RTbT6ONdUZON6YwiPNAnzo2VWmC5FPn7gniv+a8GhXZmnRVM/h\n\t337T7TY2e+V+3ukiHZdsTeV39oTIFqf+s00VP8BSf1csEDaOMxjpQfeGHFpy2xjf6Cut\n\tohKA==",
        "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:in-reply-to\n\t:references:mime-version:content-transfer-encoding;\n\tbh=HEINuNFqMWTsW9gbTE/5q3ofvnAYV9WixCk6bGtLaDE=;\n\tb=VVdMdaM/u/o0/566e/Rc5JouqVAcz+CGlAYsTCEg45dYHfBqk3H+kJARYEqC2OeJHY\n\tosTiQbG9GpsattYDLysT2OcTH01nRmMDpQ9ZCz16Wr11hMn1XFkjBgnzftegULvZ81Dw\n\tw2azdT8hGvto/Pokv0x3pau19frmE64INh2WeMu3TRNkX8LHom7B2I7BmE9WeOFvkwcM\n\tfjL41v8JbzFRbBOoBOFACjFuYhYqNCXXI5iuk2VFvFhs14+okuO3uQfO9Rm2wvpdMjij\n\tkkwF7V6r4ODZevVg04hfNAwLsqyV6U3oUBFmSqfuti9xbs9VELLCaz50AbvaGUf3bv63\n\tIKTg==",
        "X-Gm-Message-State": "APjAAAVqmpc4lub7oLyN1aG20BQvPWBZGaaRNA3QeDyeFw7nv3wZhttJ\n\t+lrAAOL7Z0fi1rhJqX0DeQZyzbZq",
        "X-Google-Smtp-Source": "APXvYqxSs4WCFRA8ju+bOcx4uebUNbnrdb9S3r3srdJMXqPFWSf03hgD6dJ+CWQ6NFEjuG6yHQfLiQ==",
        "X-Received": "by 2002:a17:90a:e38f:: with SMTP id\n\tb15mr38940470pjz.85.1563297659584; \n\tTue, 16 Jul 2019 10:20:59 -0700 (PDT)",
        "From": "Stephen Hemminger <stephen@networkplumber.org>",
        "To": "dev@dpdk.org,\n\tjgrajcia@cisco.com",
        "Cc": "Stephen Hemminger <stephen@networkplumber.org>",
        "Date": "Tue, 16 Jul 2019 10:20:57 -0700",
        "Message-Id": "<20190716172057.21110-1-stephen@networkplumber.org>",
        "X-Mailer": "git-send-email 2.20.1",
        "In-Reply-To": "<20190708160600.25939-1-stephen@networkplumber.org>",
        "References": "<20190708160600.25939-1-stephen@networkplumber.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [RFC v3] net/memif: allow for full key size in socket\n\tname",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "The key size for memif is 256 but the unix domain socket structure has\nspace for 100 bytes. Change it to use a larger buffer and not hard\ncode the keysize everywhere.\n\nNot sure what purpose of socket is anyway since there is no code\nwhich connects to it in the current tree anyway?\n\nStill an RFC, have no way to test.\n\nSigned-off-by: Stephen Hemminger <stephen@networkplumber.org>\n---\nv3 - fix checkpatch issues\n\n drivers/net/memif/memif_socket.c | 29 ++++++++++++++++++-----------\n drivers/net/memif/memif_socket.h |  4 +++-\n 2 files changed, 21 insertions(+), 12 deletions(-)",
    "diff": "diff --git a/drivers/net/memif/memif_socket.c b/drivers/net/memif/memif_socket.c\nindex 01a935f87c9f..5eecbdc98040 100644\n--- a/drivers/net/memif/memif_socket.c\n+++ b/drivers/net/memif/memif_socket.c\n@@ -860,11 +860,16 @@ memif_listener_handler(void *arg)\n \t\trte_free(cc);\n }\n \n+#define MEMIF_SOCKET_UN_SIZE\t\\\n+\t(offsetof(struct sockaddr_un, sun_path) + MEMIF_SOCKET_KEY_LEN)\n+\n static struct memif_socket *\n-memif_socket_create(struct pmd_internals *pmd, char *key, uint8_t listener)\n+memif_socket_create(struct pmd_internals *pmd,\n+\t\t    const char *key, uint8_t listener)\n {\n \tstruct memif_socket *sock;\n-\tstruct sockaddr_un un;\n+\tstruct sockaddr_un *un;\n+\tchar un_buf[MEMIF_SOCKET_UN_SIZE];\n \tint sockfd;\n \tint ret;\n \tint on = 1;\n@@ -876,7 +881,7 @@ memif_socket_create(struct pmd_internals *pmd, char *key, uint8_t listener)\n \t}\n \n \tsock->listener = listener;\n-\trte_memcpy(sock->filename, key, 256);\n+\tstrlcpy(sock->filename, key, MEMIF_SOCKET_KEY_LEN);\n \tTAILQ_INIT(&sock->dev_queue);\n \n \tif (listener != 0) {\n@@ -884,15 +889,16 @@ memif_socket_create(struct pmd_internals *pmd, char *key, uint8_t listener)\n \t\tif (sockfd < 0)\n \t\t\tgoto error;\n \n-\t\tun.sun_family = AF_UNIX;\n-\t\tmemcpy(un.sun_path, sock->filename,\n-\t\t\tsizeof(un.sun_path) - 1);\n+\t\tmemset(un_buf, 0, sizeof(un_buf));\n+\t\tun = (struct sockaddr_un *)un_buf;\n+\t\tun->sun_family = AF_UNIX;\n+\t\tstrlcpy(un->sun_path, sock->filename, MEMIF_SOCKET_KEY_LEN);\n \n \t\tret = setsockopt(sockfd, SOL_SOCKET, SO_PASSCRED, &on,\n \t\t\t\t sizeof(on));\n \t\tif (ret < 0)\n \t\t\tgoto error;\n-\t\tret = bind(sockfd, (struct sockaddr *)&un, sizeof(un));\n+\t\tret = bind(sockfd, (struct sockaddr *)un, MEMIF_SOCKET_UN_SIZE);\n \t\tif (ret < 0)\n \t\t\tgoto error;\n \t\tret = listen(sockfd, 1);\n@@ -928,9 +934,10 @@ static struct rte_hash *\n memif_create_socket_hash(void)\n {\n \tstruct rte_hash_parameters params = { 0 };\n+\n \tparams.name = MEMIF_SOCKET_HASH_NAME;\n \tparams.entries = 256;\n-\tparams.key_len = 256;\n+\tparams.key_len = MEMIF_SOCKET_KEY_LEN;\n \tparams.hash_func = rte_jhash;\n \tparams.hash_func_init_val = 0;\n \treturn rte_hash_create(&params);\n@@ -945,7 +952,7 @@ memif_socket_init(struct rte_eth_dev *dev, const char *socket_filename)\n \tstruct pmd_internals *tmp_pmd;\n \tstruct rte_hash *hash;\n \tint ret;\n-\tchar key[256];\n+\tchar key[MEMIF_SOCKET_KEY_LEN];\n \n \thash = rte_hash_find_existing(MEMIF_SOCKET_HASH_NAME);\n \tif (hash == NULL) {\n@@ -956,8 +963,8 @@ memif_socket_init(struct rte_eth_dev *dev, const char *socket_filename)\n \t\t}\n \t}\n \n-\tmemset(key, 0, 256);\n-\trte_memcpy(key, socket_filename, strlen(socket_filename));\n+\tmemset(key, 0, MEMIF_SOCKET_KEY_LEN);\n+\tstrlcpy(key, socket_filename, MEMIF_SOCKET_KEY_LEN);\n \tret = rte_hash_lookup_data(hash, key, (void **)&socket);\n \tif (ret < 0) {\n \t\tsocket = memif_socket_create(pmd, key,\ndiff --git a/drivers/net/memif/memif_socket.h b/drivers/net/memif/memif_socket.h\nindex db293e200961..9f40f8d138bb 100644\n--- a/drivers/net/memif/memif_socket.h\n+++ b/drivers/net/memif/memif_socket.h\n@@ -79,9 +79,11 @@ struct memif_socket_dev_list_elt {\n };\n \n #define MEMIF_SOCKET_HASH_NAME\t\t\t\"memif-sh\"\n+#define MEMIF_SOCKET_KEY_LEN\t\t256\n+\n struct memif_socket {\n \tstruct rte_intr_handle intr_handle;\t/**< interrupt handle */\n-\tchar filename[256];\t\t\t/**< socket filename */\n+\tchar filename[MEMIF_SOCKET_KEY_LEN];\t/**< socket filename */\n \n \tTAILQ_HEAD(, memif_socket_dev_list_elt) dev_queue;\n \t/**< Queue of devices using this socket */\n",
    "prefixes": [
        "RFC",
        "v3"
    ]
}