get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2204174,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2204174/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/20260303101525.329974-1-sun.jian.kdev@gmail.com/",
    "project": {
        "id": 26,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/26/?format=api",
        "name": "Netfilter Development",
        "link_name": "netfilter-devel",
        "list_id": "netfilter-devel.vger.kernel.org",
        "list_email": "netfilter-devel@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260303101525.329974-1-sun.jian.kdev@gmail.com>",
    "list_archive_url": null,
    "date": "2026-03-03T10:15:25",
    "name": "netfilter: use function typedefs for __rcu NAT helper hook pointers",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "b4305aab1b3008424548f7acb84443f00ac11bd5",
    "submitter": {
        "id": 92345,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/92345/?format=api",
        "name": "Sun Jian",
        "email": "sun.jian.kdev@gmail.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/20260303101525.329974-1-sun.jian.kdev@gmail.com/mbox/",
    "series": [
        {
            "id": 494157,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/494157/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/list/?series=494157",
            "date": "2026-03-03T10:15:25",
            "name": "netfilter: use function typedefs for __rcu NAT helper hook pointers",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/494157/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2204174/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2204174/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <netfilter-devel+bounces-10922-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "netfilter-devel@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20230601 header.b=O+/na8wa;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.232.135.74; helo=sto.lore.kernel.org;\n envelope-from=netfilter-devel+bounces-10922-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=\"O+/na8wa\"",
            "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.215.171",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=gmail.com"
        ],
        "Received": [
            "from sto.lore.kernel.org (sto.lore.kernel.org [172.232.135.74])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fQBX16SVGz1xw1\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 03 Mar 2026 21:15:45 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id DF8B9302E772\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  3 Mar 2026 10:15:42 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id BFAFA39A07D;\n\tTue,  3 Mar 2026 10:15:40 +0000 (UTC)",
            "from mail-pg1-f171.google.com (mail-pg1-f171.google.com\n [209.85.215.171])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id E549B39A07A\n\tfor <netfilter-devel@vger.kernel.org>; Tue,  3 Mar 2026 10:15:38 +0000 (UTC)",
            "by mail-pg1-f171.google.com with SMTP id\n 41be03b00d2f7-c70ece855e2so2292666a12.0\n        for <netfilter-devel@vger.kernel.org>;\n Tue, 03 Mar 2026 02:15:38 -0800 (PST)",
            "from u2404-VMware-Virtual-Platform.localdomain ([117.71.53.159])\n        by smtp.gmail.com with ESMTPSA id\n 98e67ed59e1d1-3599c090a6csm2395322a91.6.2026.03.03.02.15.33\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Tue, 03 Mar 2026 02:15:37 -0800 (PST)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1772532940; cv=none;\n b=bucPkJTF5LISm7812xSdseIHE/V4nk+UncMwDUG0nA10CjhRJ0eckvj76/8I3Ag1VdMDXahyYJi0A9ZK4BiSzPDPpIfT4l/8KdNw3oNQo9iyMinOQIjXk3kKTXI4W0JZt6sMtKHIqk/5W9FQW811vpTlYRxd/UTIahLSJBxwRRc=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1772532940; c=relaxed/simple;\n\tbh=wG+PfAc9u5g+XK1/1uZnooNHSSVXyzVxjzW6bzkc8Xo=;\n\th=From:To:Cc:Subject:Date:Message-ID:MIME-Version;\n b=J1myGGPTIz114JgPAc6W8cx/5A0AbEFXWMvIUZv0fwQwYHGV1BvndjCayOAgFB8R4BPHeIbkLHbh6pORYREm925hMPi88CBU9WD012/Wr3GvqguVy2UDku+Fmc0tkmp3mJGLYGLMM2Gwopw1fkxmUTPej3D7anIMEydkJtWkVbs=",
        "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com;\n spf=pass smtp.mailfrom=gmail.com;\n dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=O+/na8wa; arc=none smtp.client-ip=209.85.215.171",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=gmail.com; s=20230601; t=1772532938; x=1773137738;\n darn=vger.kernel.org;\n        h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n         :to:from:from:to:cc:subject:date:message-id:reply-to;\n        bh=14lPXQTL6fOBBMLPXur54Ks1pMsPobynplfnVPlunBM=;\n        b=O+/na8waaBNsb5XG6Fd/FeonXYv92Wq8Labljq1V9igUhWezTLkoLQgk05SOBfkR5k\n         Glptj+OmfscKjuBL2bbfdb9ZfVXnRGNwiGu5AiVVmpE5DW7A5zj2Nn4/+hOJklfOsWkJ\n         lHSBXFXn1DTn8JJNw9wlp6Umz+6Pjh5FRFN00KNoDg825xH2OWoKJ4ABoAdsIJpmw+PN\n         r0Lzyl5OmiR/UzwzqzimE2B9MM/LNqFg2V50pVUGLZfaPIs8+OG5tarSItcUH+saFz/W\n         h8SD9l3zksM08Zgc/tBsZwwx+Ry1tLVNVho04lRhzemvyNh3R+Rp79cgLmJNSdYbpecI\n         30lA==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20230601; t=1772532938; x=1773137738;\n        h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n         :message-id:reply-to;\n        bh=14lPXQTL6fOBBMLPXur54Ks1pMsPobynplfnVPlunBM=;\n        b=GowJdYBCB4xSF10gAo1AO62wpm81JoVcKYAjdz57ElvPD/qBNAz3iZT25wiEIemc5P\n         //UCFaLBsrMloxMk0/i+0Okq3ZJ7ZQJlBCi2se8q9zQdkxRtcfPB5Gu1dEwAJhpIJ6+8\n         K2EdmUyb1KxYRrm5H4D/71+GhfORk3bqE5hoJBnEdWwbD35o9iZWOBrSGWhFmqDDHANU\n         dpcAMaZ6O8dutpvGCoSM8lTsDzQNtQpQiW0mBCVKb1wJx7aPFM8WdnSdUTQKVR4PU4ZK\n         km4al+/nSR6qQ7xKG6Bw7ibfCeSDLji951XDF3+/uWASYGGS7m0AwnA/Phyznm0oJVqt\n         vuvQ==",
        "X-Forwarded-Encrypted": "i=1;\n AJvYcCX8hZigHeg8qcl0LohaPng59/Iw9EItyHCyn789wdfJ8SS/eXjJsOyMKFCFVVaAyv3wNiHKAZmdjL+fYI+VS8k=@vger.kernel.org",
        "X-Gm-Message-State": "AOJu0Yy6KMkLqeGIhFLTh0HuxvZHrHNMO91d9XejskKS48dDzpzwFUIw\n\tnuIPDMxeRMiouePkBVSQQiq8JUQXRCz9XEHQegaJBh/ITa7DUrckFd9S",
        "X-Gm-Gg": "ATEYQzy+dZEvB6wHNZvolmXYEpJCfs+hi5WU7pdROoyodbNBXTkS+YzxB2e2KeKm6uA\n\tqcc2S0E7IZNP+zQp937DQyFy1eoixyBmAxozoz+veHs90srWQqxnZe+LhqbzB5TIPNbKd5k8xvZ\n\tdQcAfa2ZGaiOt3naeieN9+WFUE4DN8IBizgfAyz1ggNORZasjjDhuNiCJmLAUfVFKrOAFj8t1na\n\tj9CFm3qig+UTUPpMbGEYOrLswb404IdkJ7DBWFND0QWHi8uKJ956yM+R2kcJL938sOzNeSp15lm\n\ts15c7WTutsmOoB3yMEKLQ/ViQ7e0AQp53BV5QYQiQwgQQ+nUKyWkZPwFXksCFx3dw9lYhEUYcGg\n\tusIMUixoRsFFc+khk69nJoaOpuKWB/zZEogRESm3eG+cSmmsrfHfatZzlmMMLbM8lo+B01NARSn\n\tyc9WN8CKj6k3opefs3Vmqu6XZCVXn7MM9HeIv9MLi2/NbrRviU/RsnLLQ5H5f0y7gfvV7hopAD3\n\tn+xLhUt",
        "X-Received": "by 2002:a17:90b:3b8a:b0:356:24c8:2291 with SMTP id\n 98e67ed59e1d1-3599ccc96bbmr1553164a91.0.1772532937988;\n        Tue, 03 Mar 2026 02:15:37 -0800 (PST)",
        "From": "Sun Jian <sun.jian.kdev@gmail.com>",
        "To": "Pablo Neira Ayuso <pablo@netfilter.org>,\n\tFlorian Westphal <fw@strlen.de>",
        "Cc": "Phil Sutter <phil@nwl.cc>,\n\tnetfilter-devel@vger.kernel.org,\n\tcoreteam@netfilter.org,\n\toe-kbuild-all@lists.linux.dev,\n\tlinux-kernel@vger.kernel.org,\n\tkernel test robot <lkp@intel.com>,\n\tSun Jian <sun.jian.kdev@gmail.com>",
        "Subject": "[PATCH] netfilter: use function typedefs for __rcu NAT helper hook\n pointers",
        "Date": "Tue,  3 Mar 2026 18:15:25 +0800",
        "Message-ID": "<20260303101525.329974-1-sun.jian.kdev@gmail.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "Precedence": "bulk",
        "X-Mailing-List": "netfilter-devel@vger.kernel.org",
        "List-Id": "<netfilter-devel.vger.kernel.org>",
        "List-Subscribe": "<mailto:netfilter-devel+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:netfilter-devel+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit"
    },
    "content": "After commit 07919126ecfc (\"netfilter: annotate NAT helper hook pointers\nwith __rcu\"), sparse can warn about type/address-space mismatches when\nRCU-dereferencing NAT helper hook function pointers.\n\nThe hooks are __rcu-annotated and accessed via rcu_dereference(), but the\ncombination of complex function pointer declarators and the WRITE_ONCE()\nmachinery used by RCU_INIT_POINTER()/rcu_assign_pointer() can confuse\nsparse and trigger false positives.\n\nIntroduce typedefs for the NAT helper function types, so __rcu applies to\na simple \"fn_t __rcu *\" pointer form. Also replace local typeof(hook)\nvariables with \"fn_t *\" to avoid propagating __rcu address space into\ntemporaries.\n\nNo functional change intended.\n\nReported-by: kernel test robot <lkp@intel.com>\nCloses: https://lore.kernel.org/oe-kbuild-all/202603022359.3dGE9fwI-lkp@intel.com/\n\nSigned-off-by: Sun Jian <sun.jian.kdev@gmail.com>\n---\n include/linux/netfilter/nf_conntrack_amanda.h | 15 +++++++++------\n include/linux/netfilter/nf_conntrack_ftp.h    | 17 ++++++++++-------\n include/linux/netfilter/nf_conntrack_irc.h    | 15 +++++++++------\n include/linux/netfilter/nf_conntrack_snmp.h   | 11 +++++++----\n include/linux/netfilter/nf_conntrack_tftp.h   |  9 ++++++---\n net/netfilter/nf_conntrack_amanda.c           | 10 ++--------\n net/netfilter/nf_conntrack_ftp.c              | 10 ++--------\n net/netfilter/nf_conntrack_irc.c              | 10 ++--------\n net/netfilter/nf_conntrack_snmp.c             |  7 ++-----\n net/netfilter/nf_conntrack_tftp.c             |  7 ++-----\n 10 files changed, 51 insertions(+), 60 deletions(-)\n\n\nbase-commit: af4e9ef3d78420feb8fe58cd9a1ab80c501b3c08",
    "diff": "diff --git a/include/linux/netfilter/nf_conntrack_amanda.h b/include/linux/netfilter/nf_conntrack_amanda.h\nindex dfe89f38d1f7..1719987e8fd8 100644\n--- a/include/linux/netfilter/nf_conntrack_amanda.h\n+++ b/include/linux/netfilter/nf_conntrack_amanda.h\n@@ -7,10 +7,13 @@\n #include <linux/skbuff.h>\n #include <net/netfilter/nf_conntrack_expect.h>\n \n-extern unsigned int (__rcu *nf_nat_amanda_hook)(struct sk_buff *skb,\n-\t\t\t\t\t  enum ip_conntrack_info ctinfo,\n-\t\t\t\t\t  unsigned int protoff,\n-\t\t\t\t\t  unsigned int matchoff,\n-\t\t\t\t\t  unsigned int matchlen,\n-\t\t\t\t\t  struct nf_conntrack_expect *exp);\n+typedef unsigned int\n+nf_nat_amanda_hook_fn(struct sk_buff *skb,\n+\t\t      enum ip_conntrack_info ctinfo,\n+\t\t      unsigned int protoff,\n+\t\t      unsigned int matchoff,\n+\t\t      unsigned int matchlen,\n+\t\t      struct nf_conntrack_expect *exp);\n+\n+extern nf_nat_amanda_hook_fn __rcu *nf_nat_amanda_hook;\n #endif /* _NF_CONNTRACK_AMANDA_H */\ndiff --git a/include/linux/netfilter/nf_conntrack_ftp.h b/include/linux/netfilter/nf_conntrack_ftp.h\nindex f31292642035..7b62446ccec4 100644\n--- a/include/linux/netfilter/nf_conntrack_ftp.h\n+++ b/include/linux/netfilter/nf_conntrack_ftp.h\n@@ -26,11 +26,14 @@ struct nf_ct_ftp_master {\n \n /* For NAT to hook in when we find a packet which describes what other\n  * connection we should expect. */\n-extern unsigned int (__rcu *nf_nat_ftp_hook)(struct sk_buff *skb,\n-\t\t\t\t       enum ip_conntrack_info ctinfo,\n-\t\t\t\t       enum nf_ct_ftp_type type,\n-\t\t\t\t       unsigned int protoff,\n-\t\t\t\t       unsigned int matchoff,\n-\t\t\t\t       unsigned int matchlen,\n-\t\t\t\t       struct nf_conntrack_expect *exp);\n+typedef unsigned int\n+nf_nat_ftp_hook_fn(struct sk_buff *skb,\n+\t\t   enum ip_conntrack_info ctinfo,\n+\t\t   enum nf_ct_ftp_type type,\n+\t\t   unsigned int protoff,\n+\t\t   unsigned int matchoff,\n+\t\t   unsigned int matchlen,\n+\t\t   struct nf_conntrack_expect *exp);\n+\n+extern nf_nat_ftp_hook_fn __rcu *nf_nat_ftp_hook;\n #endif /* _NF_CONNTRACK_FTP_H */\ndiff --git a/include/linux/netfilter/nf_conntrack_irc.h b/include/linux/netfilter/nf_conntrack_irc.h\nindex 4f3ca5621998..ce07250afb4e 100644\n--- a/include/linux/netfilter/nf_conntrack_irc.h\n+++ b/include/linux/netfilter/nf_conntrack_irc.h\n@@ -8,11 +8,14 @@\n \n #define IRC_PORT\t6667\n \n-extern unsigned int (__rcu *nf_nat_irc_hook)(struct sk_buff *skb,\n-\t\t\t\t       enum ip_conntrack_info ctinfo,\n-\t\t\t\t       unsigned int protoff,\n-\t\t\t\t       unsigned int matchoff,\n-\t\t\t\t       unsigned int matchlen,\n-\t\t\t\t       struct nf_conntrack_expect *exp);\n+typedef unsigned int\n+nf_nat_irc_hook_fn(struct sk_buff *skb,\n+\t\t   enum ip_conntrack_info ctinfo,\n+\t\t   unsigned int protoff,\n+\t\t   unsigned int matchoff,\n+\t\t   unsigned int matchlen,\n+\t\t   struct nf_conntrack_expect *exp);\n+\n+extern nf_nat_irc_hook_fn __rcu *nf_nat_irc_hook;\n \n #endif /* _NF_CONNTRACK_IRC_H */\ndiff --git a/include/linux/netfilter/nf_conntrack_snmp.h b/include/linux/netfilter/nf_conntrack_snmp.h\nindex 99107e4f5234..bb39f04a9977 100644\n--- a/include/linux/netfilter/nf_conntrack_snmp.h\n+++ b/include/linux/netfilter/nf_conntrack_snmp.h\n@@ -5,9 +5,12 @@\n #include <linux/netfilter.h>\n #include <linux/skbuff.h>\n \n-extern int (__rcu *nf_nat_snmp_hook)(struct sk_buff *skb,\n-\t\t\t\tunsigned int protoff,\n-\t\t\t\tstruct nf_conn *ct,\n-\t\t\t\tenum ip_conntrack_info ctinfo);\n+typedef int\n+nf_nat_snmp_hook_fn(struct sk_buff *skb,\n+\t\t    unsigned int protoff,\n+\t\t    struct nf_conn *ct,\n+\t\t    enum ip_conntrack_info ctinfo);\n+\n+extern nf_nat_snmp_hook_fn __rcu *nf_nat_snmp_hook;\n \n #endif /* _NF_CONNTRACK_SNMP_H */\ndiff --git a/include/linux/netfilter/nf_conntrack_tftp.h b/include/linux/netfilter/nf_conntrack_tftp.h\nindex 1490b68dd7d1..90b334bbce3c 100644\n--- a/include/linux/netfilter/nf_conntrack_tftp.h\n+++ b/include/linux/netfilter/nf_conntrack_tftp.h\n@@ -19,8 +19,11 @@ struct tftphdr {\n #define TFTP_OPCODE_ACK\t\t4\n #define TFTP_OPCODE_ERROR\t5\n \n-extern unsigned int (__rcu *nf_nat_tftp_hook)(struct sk_buff *skb,\n-\t\t\t\t        enum ip_conntrack_info ctinfo,\n-\t\t\t\t        struct nf_conntrack_expect *exp);\n+typedef unsigned int\n+nf_nat_tftp_hook_fn(struct sk_buff *skb,\n+\t\t    enum ip_conntrack_info ctinfo,\n+\t\t    struct nf_conntrack_expect *exp);\n+\n+extern nf_nat_tftp_hook_fn __rcu *nf_nat_tftp_hook;\n \n #endif /* _NF_CONNTRACK_TFTP_H */\ndiff --git a/net/netfilter/nf_conntrack_amanda.c b/net/netfilter/nf_conntrack_amanda.c\nindex c0132559f6af..d2c09e8dd872 100644\n--- a/net/netfilter/nf_conntrack_amanda.c\n+++ b/net/netfilter/nf_conntrack_amanda.c\n@@ -37,13 +37,7 @@ MODULE_PARM_DESC(master_timeout, \"timeout for the master connection\");\n module_param(ts_algo, charp, 0400);\n MODULE_PARM_DESC(ts_algo, \"textsearch algorithm to use (default kmp)\");\n \n-unsigned int (__rcu *nf_nat_amanda_hook)(struct sk_buff *skb,\n-\t\t\t\t\t enum ip_conntrack_info ctinfo,\n-\t\t\t\t\t unsigned int protoff,\n-\t\t\t\t\t unsigned int matchoff,\n-\t\t\t\t\t unsigned int matchlen,\n-\t\t\t\t\t struct nf_conntrack_expect *exp)\n-\t\t\t\t\t __read_mostly;\n+nf_nat_amanda_hook_fn __rcu *nf_nat_amanda_hook __read_mostly;\n EXPORT_SYMBOL_GPL(nf_nat_amanda_hook);\n \n enum amanda_strings {\n@@ -98,7 +92,7 @@ static int amanda_help(struct sk_buff *skb,\n \tu_int16_t len;\n \t__be16 port;\n \tint ret = NF_ACCEPT;\n-\ttypeof(nf_nat_amanda_hook) nf_nat_amanda;\n+\tnf_nat_amanda_hook_fn *nf_nat_amanda;\n \n \t/* Only look at packets from the Amanda server */\n \tif (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL)\ndiff --git a/net/netfilter/nf_conntrack_ftp.c b/net/netfilter/nf_conntrack_ftp.c\nindex 5e00f9123c38..de83bf9e6c61 100644\n--- a/net/netfilter/nf_conntrack_ftp.c\n+++ b/net/netfilter/nf_conntrack_ftp.c\n@@ -43,13 +43,7 @@ module_param_array(ports, ushort, &ports_c, 0400);\n static bool loose;\n module_param(loose, bool, 0600);\n \n-unsigned int (__rcu *nf_nat_ftp_hook)(struct sk_buff *skb,\n-\t\t\t\t      enum ip_conntrack_info ctinfo,\n-\t\t\t\t      enum nf_ct_ftp_type type,\n-\t\t\t\t      unsigned int protoff,\n-\t\t\t\t      unsigned int matchoff,\n-\t\t\t\t      unsigned int matchlen,\n-\t\t\t\t      struct nf_conntrack_expect *exp);\n+nf_nat_ftp_hook_fn __rcu *nf_nat_ftp_hook;\n EXPORT_SYMBOL_GPL(nf_nat_ftp_hook);\n \n static int try_rfc959(const char *, size_t, struct nf_conntrack_man *,\n@@ -385,7 +379,7 @@ static int help(struct sk_buff *skb,\n \tstruct nf_conntrack_man cmd = {};\n \tunsigned int i;\n \tint found = 0, ends_in_nl;\n-\ttypeof(nf_nat_ftp_hook) nf_nat_ftp;\n+\tnf_nat_ftp_hook_fn *nf_nat_ftp;\n \n \t/* Until there's been traffic both ways, don't look in packets. */\n \tif (ctinfo != IP_CT_ESTABLISHED &&\ndiff --git a/net/netfilter/nf_conntrack_irc.c b/net/netfilter/nf_conntrack_irc.c\nindex b8e6d724acd1..522183b9a604 100644\n--- a/net/netfilter/nf_conntrack_irc.c\n+++ b/net/netfilter/nf_conntrack_irc.c\n@@ -30,13 +30,7 @@ static unsigned int dcc_timeout __read_mostly = 300;\n static char *irc_buffer;\n static DEFINE_SPINLOCK(irc_buffer_lock);\n \n-unsigned int (__rcu *nf_nat_irc_hook)(struct sk_buff *skb,\n-\t\t\t\t      enum ip_conntrack_info ctinfo,\n-\t\t\t\t      unsigned int protoff,\n-\t\t\t\t      unsigned int matchoff,\n-\t\t\t\t      unsigned int matchlen,\n-\t\t\t\t      struct nf_conntrack_expect *exp)\n-\t\t\t\t      __read_mostly;\n+nf_nat_irc_hook_fn __rcu *nf_nat_irc_hook __read_mostly;\n EXPORT_SYMBOL_GPL(nf_nat_irc_hook);\n \n #define HELPER_NAME \"irc\"\n@@ -122,7 +116,7 @@ static int help(struct sk_buff *skb, unsigned int protoff,\n \t__be16 port;\n \tint i, ret = NF_ACCEPT;\n \tchar *addr_beg_p, *addr_end_p;\n-\ttypeof(nf_nat_irc_hook) nf_nat_irc;\n+\tnf_nat_irc_hook_fn *nf_nat_irc;\n \tunsigned int datalen;\n \n \t/* If packet is coming from IRC server */\ndiff --git a/net/netfilter/nf_conntrack_snmp.c b/net/netfilter/nf_conntrack_snmp.c\nindex 387dd6e58f88..7b7eed43c54f 100644\n--- a/net/netfilter/nf_conntrack_snmp.c\n+++ b/net/netfilter/nf_conntrack_snmp.c\n@@ -25,17 +25,14 @@ static unsigned int timeout __read_mostly = 30;\n module_param(timeout, uint, 0400);\n MODULE_PARM_DESC(timeout, \"timeout for master connection/replies in seconds\");\n \n-int (__rcu *nf_nat_snmp_hook)(struct sk_buff *skb,\n-\t\t\t      unsigned int protoff,\n-\t\t\t      struct nf_conn *ct,\n-\t\t\t      enum ip_conntrack_info ctinfo);\n+nf_nat_snmp_hook_fn __rcu *nf_nat_snmp_hook;\n EXPORT_SYMBOL_GPL(nf_nat_snmp_hook);\n \n static int snmp_conntrack_help(struct sk_buff *skb, unsigned int protoff,\n \t\t\t       struct nf_conn *ct,\n \t\t\t       enum ip_conntrack_info ctinfo)\n {\n-\ttypeof(nf_nat_snmp_hook) nf_nat_snmp;\n+\tnf_nat_snmp_hook_fn *nf_nat_snmp;\n \n \tnf_conntrack_broadcast_help(skb, ct, ctinfo, timeout);\n \ndiff --git a/net/netfilter/nf_conntrack_tftp.c b/net/netfilter/nf_conntrack_tftp.c\nindex 89e9914e5d03..a2e6833a0bf7 100644\n--- a/net/netfilter/nf_conntrack_tftp.c\n+++ b/net/netfilter/nf_conntrack_tftp.c\n@@ -32,10 +32,7 @@ static unsigned int ports_c;\n module_param_array(ports, ushort, &ports_c, 0400);\n MODULE_PARM_DESC(ports, \"Port numbers of TFTP servers\");\n \n-unsigned int (__rcu *nf_nat_tftp_hook)(struct sk_buff *skb,\n-\t\t\t\t       enum ip_conntrack_info ctinfo,\n-\t\t\t\t       struct nf_conntrack_expect *exp)\n-\t\t\t\t       __read_mostly;\n+nf_nat_tftp_hook_fn __rcu *nf_nat_tftp_hook __read_mostly;\n EXPORT_SYMBOL_GPL(nf_nat_tftp_hook);\n \n static int tftp_help(struct sk_buff *skb,\n@@ -48,7 +45,7 @@ static int tftp_help(struct sk_buff *skb,\n \tstruct nf_conntrack_expect *exp;\n \tstruct nf_conntrack_tuple *tuple;\n \tunsigned int ret = NF_ACCEPT;\n-\ttypeof(nf_nat_tftp_hook) nf_nat_tftp;\n+\tnf_nat_tftp_hook_fn *nf_nat_tftp;\n \n \ttfh = skb_header_pointer(skb, protoff + sizeof(struct udphdr),\n \t\t\t\t sizeof(_tftph), &_tftph);\n",
    "prefixes": []
}