Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/807076/?format=api
{ "id": 807076, "url": "http://patchwork.ozlabs.org/api/patches/807076/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/150400961436.21371.5752181815964115532.stgit@warthog.procyon.org.uk/", "project": { "id": 7, "url": "http://patchwork.ozlabs.org/api/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": "<150400961436.21371.5752181815964115532.stgit@warthog.procyon.org.uk>", "list_archive_url": null, "date": "2017-08-29T12:26:54", "name": "[net-next,1/7] net: rxrpc: Replace time_t type with time64_t type", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "6eb8f0510a64bed8ed79d613f2935d15cc70885f", "submitter": { "id": 59, "url": "http://patchwork.ozlabs.org/api/people/59/?format=api", "name": "David Howells", "email": "dhowells@redhat.com" }, "delegate": { "id": 34, "url": "http://patchwork.ozlabs.org/api/users/34/?format=api", "username": "davem", "first_name": "David", "last_name": "Miller", "email": "davem@davemloft.net" }, "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/150400961436.21371.5752181815964115532.stgit@warthog.procyon.org.uk/mbox/", "series": [ { "id": 358, "url": "http://patchwork.ozlabs.org/api/series/358/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=358", "date": "2017-08-29T12:27:14", "name": "rxrpc: Miscellany", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/358/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/807076/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/807076/checks/", "tags": {}, "related": [], "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>)", "ext-mx06.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com", "ext-mx06.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=dhowells@redhat.com" ], "Received": [ "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xhSc664l8z9t2Q\n\tfor <patchwork-incoming@ozlabs.org>;\n\tTue, 29 Aug 2017 22:28:54 +1000 (AEST)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1753844AbdH2M06 (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tTue, 29 Aug 2017 08:26:58 -0400", "from mx1.redhat.com ([209.132.183.28]:54312 \"EHLO mx1.redhat.com\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S1751795AbdH2M04 (ORCPT <rfc822;netdev@vger.kernel.org>);\n\tTue, 29 Aug 2017 08:26:56 -0400", "from smtp.corp.redhat.com\n\t(int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id E1748356EA;\n\tTue, 29 Aug 2017 12:26:55 +0000 (UTC)", "from warthog.procyon.org.uk (ovpn-120-50.rdu2.redhat.com\n\t[10.10.120.50])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 0E3B366D72;\n\tTue, 29 Aug 2017 12:26:54 +0000 (UTC)" ], "DMARC-Filter": "OpenDMARC Filter v1.3.2 mx1.redhat.com E1748356EA", "Organization": "Red Hat UK Ltd. Registered Address: Red Hat UK Ltd, Amberley\n\tPlace, 107-111 Peascod Street, Windsor, Berkshire, SI4 1TE, United\n\tKingdom.\n\tRegistered in England and Wales under Company Registration No.\n\t3798903", "Subject": "[PATCH net-next 1/7] net: rxrpc: Replace time_t type with time64_t\n\ttype", "From": "David Howells <dhowells@redhat.com>", "To": "netdev@vger.kernel.org", "Cc": "dhowells@redhat.com, linux-afs@lists.infradead.org,\n\tlinux-kernel@vger.kernel.org", "Date": "Tue, 29 Aug 2017 13:26:54 +0100", "Message-ID": "<150400961436.21371.5752181815964115532.stgit@warthog.procyon.org.uk>", "In-Reply-To": "<150400960745.21371.15455867950162722742.stgit@warthog.procyon.org.uk>", "References": "<150400960745.21371.15455867950162722742.stgit@warthog.procyon.org.uk>", "User-Agent": "StGit/0.17.1-dirty", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.14", "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.30]);\n\tTue, 29 Aug 2017 12:26:56 +0000 (UTC)", "Sender": "netdev-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<netdev.vger.kernel.org>", "X-Mailing-List": "netdev@vger.kernel.org" }, "content": "From: Baolin Wang <baolin.wang@linaro.org>\n\nSince the 'expiry' variable of 'struct key_preparsed_payload' has been\nchanged to 'time64_t' type, which is year 2038 safe on 32bits system.\n\nIn net/rxrpc subsystem, we need convert 'u32' type to 'time64_t' type\nwhen copying ticket expires time to 'prep->expiry', then this patch\nintroduces two helper functions to help convert 'u32' to 'time64_t'\ntype.\n\nThis patch also uses ktime_get_real_seconds() to get current time instead\nof get_seconds() which is not year 2038 safe on 32bits system.\n\nSigned-off-by: Baolin Wang <baolin.wang@linaro.org>\nSigned-off-by: David Howells <dhowells@redhat.com>\n---\n\n include/keys/rxrpc-type.h | 23 +++++++++++++++++++++++\n net/rxrpc/ar-internal.h | 2 +-\n net/rxrpc/key.c | 22 ++++++++++++++--------\n net/rxrpc/rxkad.c | 14 +++++++-------\n 4 files changed, 45 insertions(+), 16 deletions(-)", "diff": "diff --git a/include/keys/rxrpc-type.h b/include/keys/rxrpc-type.h\nindex 5de0673f333b..8cf829dbf20e 100644\n--- a/include/keys/rxrpc-type.h\n+++ b/include/keys/rxrpc-type.h\n@@ -127,4 +127,27 @@ struct rxrpc_key_data_v1 {\n #define AFSTOKEN_K5_ADDRESSES_MAX\t16\t/* max K5 addresses */\n #define AFSTOKEN_K5_AUTHDATA_MAX\t16\t/* max K5 pieces of auth data */\n \n+/*\n+ * Truncate a time64_t to the range from 1970 to 2106 as in the network\n+ * protocol.\n+ */\n+static inline u32 rxrpc_time64_to_u32(time64_t time)\n+{\n+\tif (time < 0)\n+\t\treturn 0;\n+\n+\tif (time > UINT_MAX)\n+\t\treturn UINT_MAX;\n+\n+\treturn (u32)time;\n+}\n+\n+/*\n+ * Extend u32 back to time64_t using the same 1970-2106 range.\n+ */\n+static inline time64_t rxrpc_u32_to_time64(u32 time)\n+{\n+\treturn (time64_t)time;\n+}\n+\n #endif /* _KEYS_RXRPC_TYPE_H */\ndiff --git a/net/rxrpc/ar-internal.h b/net/rxrpc/ar-internal.h\nindex 8c0db9b3e4ab..8cac66774de1 100644\n--- a/net/rxrpc/ar-internal.h\n+++ b/net/rxrpc/ar-internal.h\n@@ -894,7 +894,7 @@ extern struct key_type key_type_rxrpc_s;\n \n int rxrpc_request_key(struct rxrpc_sock *, char __user *, int);\n int rxrpc_server_keyring(struct rxrpc_sock *, char __user *, int);\n-int rxrpc_get_server_data_key(struct rxrpc_connection *, const void *, time_t,\n+int rxrpc_get_server_data_key(struct rxrpc_connection *, const void *, time64_t,\n \t\t\t u32);\n \n /*\ndiff --git a/net/rxrpc/key.c b/net/rxrpc/key.c\nindex 54369225766e..e2d36619b53a 100644\n--- a/net/rxrpc/key.c\n+++ b/net/rxrpc/key.c\n@@ -92,6 +92,7 @@ static int rxrpc_preparse_xdr_rxkad(struct key_preparsed_payload *prep,\n \t\t\t\t const __be32 *xdr, unsigned int toklen)\n {\n \tstruct rxrpc_key_token *token, **pptoken;\n+\ttime64_t expiry;\n \tsize_t plen;\n \tu32 tktlen;\n \n@@ -158,8 +159,9 @@ static int rxrpc_preparse_xdr_rxkad(struct key_preparsed_payload *prep,\n \t pptoken = &(*pptoken)->next)\n \t\tcontinue;\n \t*pptoken = token;\n-\tif (token->kad->expiry < prep->expiry)\n-\t\tprep->expiry = token->kad->expiry;\n+\texpiry = rxrpc_u32_to_time64(token->kad->expiry);\n+\tif (expiry < prep->expiry)\n+\t\tprep->expiry = expiry;\n \n \t_leave(\" = 0\");\n \treturn 0;\n@@ -433,6 +435,7 @@ static int rxrpc_preparse_xdr_rxk5(struct key_preparsed_payload *prep,\n \tstruct rxrpc_key_token *token, **pptoken;\n \tstruct rxk5_key *rxk5;\n \tconst __be32 *end_xdr = xdr + (toklen >> 2);\n+\ttime64_t expiry;\n \tint ret;\n \n \t_enter(\",{%x,%x,%x,%x},%u\",\n@@ -533,8 +536,9 @@ static int rxrpc_preparse_xdr_rxk5(struct key_preparsed_payload *prep,\n \t pptoken = &(*pptoken)->next)\n \t\tcontinue;\n \t*pptoken = token;\n-\tif (token->kad->expiry < prep->expiry)\n-\t\tprep->expiry = token->kad->expiry;\n+\texpiry = rxrpc_u32_to_time64(token->kad->expiry);\n+\tif (expiry < prep->expiry)\n+\t\tprep->expiry = expiry;\n \n \t_leave(\" = 0\");\n \treturn 0;\n@@ -691,6 +695,7 @@ static int rxrpc_preparse(struct key_preparsed_payload *prep)\n {\n \tconst struct rxrpc_key_data_v1 *v1;\n \tstruct rxrpc_key_token *token, **pp;\n+\ttime64_t expiry;\n \tsize_t plen;\n \tu32 kver;\n \tint ret;\n@@ -777,8 +782,9 @@ static int rxrpc_preparse(struct key_preparsed_payload *prep)\n \twhile (*pp)\n \t\tpp = &(*pp)->next;\n \t*pp = token;\n-\tif (token->kad->expiry < prep->expiry)\n-\t\tprep->expiry = token->kad->expiry;\n+\texpiry = rxrpc_u32_to_time64(token->kad->expiry);\n+\tif (expiry < prep->expiry)\n+\t\tprep->expiry = expiry;\n \ttoken = NULL;\n \tret = 0;\n \n@@ -955,7 +961,7 @@ int rxrpc_server_keyring(struct rxrpc_sock *rx, char __user *optval,\n */\n int rxrpc_get_server_data_key(struct rxrpc_connection *conn,\n \t\t\t const void *session_key,\n-\t\t\t time_t expiry,\n+\t\t\t time64_t expiry,\n \t\t\t u32 kvno)\n {\n \tconst struct cred *cred = current_cred();\n@@ -982,7 +988,7 @@ int rxrpc_get_server_data_key(struct rxrpc_connection *conn,\n \tdata.kver = 1;\n \tdata.v1.security_index = RXRPC_SECURITY_RXKAD;\n \tdata.v1.ticket_length = 0;\n-\tdata.v1.expiry = expiry;\n+\tdata.v1.expiry = rxrpc_time64_to_u32(expiry);\n \tdata.v1.kvno = 0;\n \n \tmemcpy(&data.v1.session_key, session_key, sizeof(data.v1.session_key));\ndiff --git a/net/rxrpc/rxkad.c b/net/rxrpc/rxkad.c\nindex 46d1a1f0b55b..34c86d2bcae5 100644\n--- a/net/rxrpc/rxkad.c\n+++ b/net/rxrpc/rxkad.c\n@@ -854,7 +854,7 @@ static int rxkad_decrypt_ticket(struct rxrpc_connection *conn,\n \t\t\t\tstruct sk_buff *skb,\n \t\t\t\tvoid *ticket, size_t ticket_len,\n \t\t\t\tstruct rxrpc_crypt *_session_key,\n-\t\t\t\ttime_t *_expiry,\n+\t\t\t\ttime64_t *_expiry,\n \t\t\t\tu32 *_abort_code)\n {\n \tstruct skcipher_request *req;\n@@ -864,7 +864,7 @@ static int rxkad_decrypt_ticket(struct rxrpc_connection *conn,\n \tstruct in_addr addr;\n \tunsigned int life;\n \tconst char *eproto;\n-\ttime_t issue, now;\n+\ttime64_t issue, now;\n \tbool little_endian;\n \tint ret;\n \tu32 abort_code;\n@@ -960,15 +960,15 @@ static int rxkad_decrypt_ticket(struct rxrpc_connection *conn,\n \tif (little_endian) {\n \t\t__le32 stamp;\n \t\tmemcpy(&stamp, p, 4);\n-\t\tissue = le32_to_cpu(stamp);\n+\t\tissue = rxrpc_u32_to_time64(le32_to_cpu(stamp));\n \t} else {\n \t\t__be32 stamp;\n \t\tmemcpy(&stamp, p, 4);\n-\t\tissue = be32_to_cpu(stamp);\n+\t\tissue = rxrpc_u32_to_time64(be32_to_cpu(stamp));\n \t}\n \tp += 4;\n-\tnow = get_seconds();\n-\t_debug(\"KIV ISSUE: %lx [%lx]\", issue, now);\n+\tnow = ktime_get_real_seconds();\n+\t_debug(\"KIV ISSUE: %llx [%llx]\", issue, now);\n \n \t/* check the ticket is in date */\n \tif (issue > now) {\n@@ -1053,7 +1053,7 @@ static int rxkad_verify_response(struct rxrpc_connection *conn,\n \tstruct rxrpc_skb_priv *sp = rxrpc_skb(skb);\n \tstruct rxrpc_crypt session_key;\n \tconst char *eproto;\n-\ttime_t expiry;\n+\ttime64_t expiry;\n \tvoid *ticket;\n \tu32 abort_code, version, kvno, ticket_len, level;\n \t__be32 csum;\n", "prefixes": [ "net-next", "1/7" ] }