Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/817715/?format=api
{ "id": 817715, "url": "http://patchwork.ozlabs.org/api/patches/817715/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/20170922212930.620249-7-arnd@arndb.de/", "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": "<20170922212930.620249-7-arnd@arndb.de>", "list_archive_url": null, "date": "2017-09-22T21:29:17", "name": "[v4,6/9] dvb-frontends: fix i2c access helpers for KASAN", "commit_ref": null, "pull_url": null, "state": "not-applicable", "archived": true, "hash": "6e3171556c7fa221d75020d7de7701591eccf8d3", "submitter": { "id": 30, "url": "http://patchwork.ozlabs.org/api/people/30/?format=api", "name": "Arnd Bergmann", "email": "arnd@arndb.de" }, "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/20170922212930.620249-7-arnd@arndb.de/mbox/", "series": [ { "id": 4712, "url": "http://patchwork.ozlabs.org/api/series/4712/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=4712", "date": "2017-09-22T21:29:16", "name": "bring back stack frame warning with KASAN", "version": 4, "mbox": "http://patchwork.ozlabs.org/series/4712/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/817715/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/817715/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>)", "Received": [ "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xzRWR38cXz9s9Y\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat, 23 Sep 2017 07:31:47 +1000 (AEST)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1752722AbdIVVbe (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tFri, 22 Sep 2017 17:31:34 -0400", "from mout.kundenserver.de ([212.227.126.131]:50496 \"EHLO\n\tmout.kundenserver.de\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1752078AbdIVVbb (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Fri, 22 Sep 2017 17:31:31 -0400", "from wuerfel.lan ([95.208.190.237]) by mrelayeu.kundenserver.de\n\t(mreue002 [212.227.15.129]) with ESMTPA (Nemesis) id\n\t0LlMaV-1dLLyN0Wnf-00bHcv; Fri, 22 Sep 2017 23:31:08 +0200" ], "From": "Arnd Bergmann <arnd@arndb.de>", "To": "Mauro Carvalho Chehab <mchehab@kernel.org>", "Cc": "Arnd Bergmann <arnd@arndb.de>, Jiri Pirko <jiri@resnulli.us>, Arend van\n\tSpriel <arend.vanspriel@broadcom.com>, \n\tKalle Valo <kvalo@codeaurora.org>, \"David S. Miller\"\n\t<davem@davemloft.net>, Andrey Ryabinin <aryabinin@virtuozzo.com>,\n\tAlexander Potapenko <glider@google.com>, \n\tDmitry Vyukov <dvyukov@google.com>, Masahiro Yamada\n\t<yamada.masahiro@socionext.com>, Michal Marek <mmarek@suse.com>,\n\tAndrew Morton <akpm@linux-foundation.org>, Kees Cook\n\t<keescook@chromium.org>, Geert Uytterhoeven <geert@linux-m68k.org>,\n\tGreg Kroah-Hartman <gregkh@linuxfoundation.org>, \n\tlinux-media@vger.kernel.org, linux-kernel@vger.kernel.org, \n\tnetdev@vger.kernel.org, linux-wireless@vger.kernel.org, \n\tbrcm80211-dev-list.pdl@broadcom.com, brcm80211-dev-list@cypress.com,\n\tkasan-dev@googlegroups.com, linux-kbuild@vger.kernel.org,\n\tJakub Jelinek <jakub@gcc.gnu.org>, =?utf-8?q?Martin_Li=C5=A1ka?=\n\t<marxin@gcc.gnu.org>, stable@vger.kernel.org", "Subject": "[PATCH v4 6/9] dvb-frontends: fix i2c access helpers for KASAN", "Date": "Fri, 22 Sep 2017 23:29:17 +0200", "Message-Id": "<20170922212930.620249-7-arnd@arndb.de>", "X-Mailer": "git-send-email 2.9.0", "In-Reply-To": "<20170922212930.620249-1-arnd@arndb.de>", "References": "<20170922212930.620249-1-arnd@arndb.de>", "X-Provags-ID": "V03:K0:3bhHkO2E19e4lnpdNrfIXS046xX7bi8KhupYQclcf7PPXxnj2Y0\n\tHliVWb/OATW2iuvbxcUooFEFH3LMIjj93snZfC1tkZgKfnAwbTNZ95o5ETNDty6xP/6fTNu\n\tiqEEaOKMnDyYeN7I/OpHXsm3L8V67GsI9sm9serr9+JtO0ksMiP3eMkJOwWt45g5fOQiYf+\n\tPwD7aHZ0srGb+vW+PUO8w==", "X-UI-Out-Filterresults": "notjunk:1; V01:K0:saU9NLy7V0E=:Hy7vI+E/4Ya2jFWm8Mf6r/\n\t96yDzqnFNcVVB5u7Ukg7zlZjT3X1qtEwD3yxbTC96LpMas+pg3y/n7wEYndrvidTFz2qqZc4D\n\t0le9HEm2bknqGd/krY0GHm9kIcTo14k6nuwuT+zbSBIzmReHuP5rSOVmzxl2zvkbUmWesP6N4\n\tWRKbNZFDQpR338akYT3GD06ZD1ITsKxiUHgkJzqxbq2ZJ55CYl6rTmFyc7O1eNUXJrOMGSnRF\n\tFf98JS8bWBECx25FtUw0z4tZwa0fB65yZHWvLwLMAL0zsVMSY0FcYXlcLdvWx5eKFm9IfWNeA\n\trwA5ildqvwpzarAzhgPRza1hTf6HGyGutgSnLauQLVWgpTkdTe5dGad5g4oD1XekKUHLq7LES\n\tpY4Q7saCQUXZcvroynN2LIfdCMTxTALvFUrWxdPYCKwwaAlDHOKfYvjw6jbIWGupo+JHL1qNL\n\t8h62DblKzdm6Daqkchf+gRelxrIt2jBBzrwqear3hrp5t6amuw9ufx0RiuLF4OEUC7fe4HhjF\n\tuxv64SZPiwqCnlRVD0kLx+gSPtwH/ZrYBhc2n8ipf86mb9xb3FE+GUO4R52T0rQYz6tP60Pee\n\t7YMWICTp4McfbeJhN35BCmPJNjY4kk1PaE8m5mL47niZRTrG4k9RUygRUROueCQU3Lzws5yj8\n\t1OPyhKyqkKlE5EM2h7Tcv3YqZ0ni5NKw0WmPHJcQWHnFG5BUOuXQQM0n1GmDhYLWLYrGdSeIB\n\tpjnWrwUkwcIX1v9z9Mj3dz/3lkMG0A2OcyYgPw==", "Sender": "netdev-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<netdev.vger.kernel.org>", "X-Mailing-List": "netdev@vger.kernel.org" }, "content": "A typical code fragment was copied across many dvb-frontend drivers and\ncauses large stack frames when built with with CONFIG_KASAN on gcc-5/6/7:\n\ndrivers/media/dvb-frontends/cxd2841er.c:3225:1: error: the frame size of 3992 bytes is larger than 3072 bytes [-Werror=frame-larger-than=]\ndrivers/media/dvb-frontends/cxd2841er.c:3404:1: error: the frame size of 3136 bytes is larger than 3072 bytes [-Werror=frame-larger-than=]\ndrivers/media/dvb-frontends/stv0367.c:3143:1: error: the frame size of 4016 bytes is larger than 3072 bytes [-Werror=frame-larger-than=]\ndrivers/media/dvb-frontends/stv090x.c:3430:1: error: the frame size of 5312 bytes is larger than 3072 bytes [-Werror=frame-larger-than=]\ndrivers/media/dvb-frontends/stv090x.c:4248:1: error: the frame size of 4872 bytes is larger than 3072 bytes [-Werror=frame-larger-than=]\n\ngcc-8 now solves this by consolidating the stack slots for the argument\nvariables, but on older compilers we can get the same behavior by taking\nthe pointer of a local variable rather than the inline function argument.\n\nCc: stable@vger.kernel.org\nLink: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715\nSigned-off-by: Arnd Bergmann <arnd@arndb.de>\n---\nI'm undecided here whether there should be a comment pointing\nto PR81715 for each file that the bogus local variable workaround\nto prevent it from being cleaned up again. It's probably not\nnecessary since anything that causes actual problems would also\ntrigger a build warning.\n---\n drivers/media/dvb-frontends/ascot2e.c | 4 +++-\n drivers/media/dvb-frontends/cxd2841er.c | 4 +++-\n drivers/media/dvb-frontends/helene.c | 4 +++-\n drivers/media/dvb-frontends/horus3a.c | 4 +++-\n drivers/media/dvb-frontends/itd1000.c | 5 +++--\n drivers/media/dvb-frontends/mt312.c | 4 +++-\n drivers/media/dvb-frontends/stb0899_drv.c | 3 ++-\n drivers/media/dvb-frontends/stb6100.c | 6 ++++--\n drivers/media/dvb-frontends/stv0367.c | 4 +++-\n drivers/media/dvb-frontends/stv090x.c | 4 +++-\n drivers/media/dvb-frontends/stv6110x.c | 4 +++-\n drivers/media/dvb-frontends/zl10039.c | 4 +++-\n 12 files changed, 36 insertions(+), 14 deletions(-)", "diff": "diff --git a/drivers/media/dvb-frontends/ascot2e.c b/drivers/media/dvb-frontends/ascot2e.c\nindex 0ee0df53b91b..1219272ca3f0 100644\n--- a/drivers/media/dvb-frontends/ascot2e.c\n+++ b/drivers/media/dvb-frontends/ascot2e.c\n@@ -155,7 +155,9 @@ static int ascot2e_write_regs(struct ascot2e_priv *priv,\n \n static int ascot2e_write_reg(struct ascot2e_priv *priv, u8 reg, u8 val)\n {\n-\treturn ascot2e_write_regs(priv, reg, &val, 1);\n+\tu8 tmp = val;\n+\n+\treturn ascot2e_write_regs(priv, reg, &tmp, 1);\n }\n \n static int ascot2e_read_regs(struct ascot2e_priv *priv,\ndiff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c\nindex 48ee9bc00c06..b7574deff5c6 100644\n--- a/drivers/media/dvb-frontends/cxd2841er.c\n+++ b/drivers/media/dvb-frontends/cxd2841er.c\n@@ -257,7 +257,9 @@ static int cxd2841er_write_regs(struct cxd2841er_priv *priv,\n static int cxd2841er_write_reg(struct cxd2841er_priv *priv,\n \t\t\t u8 addr, u8 reg, u8 val)\n {\n-\treturn cxd2841er_write_regs(priv, addr, reg, &val, 1);\n+\tu8 tmp = val;\n+\n+\treturn cxd2841er_write_regs(priv, addr, reg, &tmp, 1);\n }\n \n static int cxd2841er_read_regs(struct cxd2841er_priv *priv,\ndiff --git a/drivers/media/dvb-frontends/helene.c b/drivers/media/dvb-frontends/helene.c\nindex 4bf5a551ba40..6e93f2d1575b 100644\n--- a/drivers/media/dvb-frontends/helene.c\n+++ b/drivers/media/dvb-frontends/helene.c\n@@ -331,7 +331,9 @@ static int helene_write_regs(struct helene_priv *priv,\n \n static int helene_write_reg(struct helene_priv *priv, u8 reg, u8 val)\n {\n-\treturn helene_write_regs(priv, reg, &val, 1);\n+\tu8 tmp = val;\n+\n+\treturn helene_write_regs(priv, reg, &tmp, 1);\n }\n \n static int helene_read_regs(struct helene_priv *priv,\ndiff --git a/drivers/media/dvb-frontends/horus3a.c b/drivers/media/dvb-frontends/horus3a.c\nindex 68d759c4c52e..fa9e2d373073 100644\n--- a/drivers/media/dvb-frontends/horus3a.c\n+++ b/drivers/media/dvb-frontends/horus3a.c\n@@ -89,7 +89,9 @@ static int horus3a_write_regs(struct horus3a_priv *priv,\n \n static int horus3a_write_reg(struct horus3a_priv *priv, u8 reg, u8 val)\n {\n-\treturn horus3a_write_regs(priv, reg, &val, 1);\n+\tu8 tmp = val;\n+\n+\treturn horus3a_write_regs(priv, reg, &tmp, 1);\n }\n \n static int horus3a_enter_power_save(struct horus3a_priv *priv)\ndiff --git a/drivers/media/dvb-frontends/itd1000.c b/drivers/media/dvb-frontends/itd1000.c\nindex 5bb1e73a10b4..1ac5177162f6 100644\n--- a/drivers/media/dvb-frontends/itd1000.c\n+++ b/drivers/media/dvb-frontends/itd1000.c\n@@ -95,8 +95,9 @@ static int itd1000_read_reg(struct itd1000_state *state, u8 reg)\n \n static inline int itd1000_write_reg(struct itd1000_state *state, u8 r, u8 v)\n {\n-\tint ret = itd1000_write_regs(state, r, &v, 1);\n-\tstate->shadow[r] = v;\n+\tu8 tmp = v;\n+\tint ret = itd1000_write_regs(state, r, &tmp, 1);\n+\tstate->shadow[r] = tmp;\n \treturn ret;\n }\n \ndiff --git a/drivers/media/dvb-frontends/mt312.c b/drivers/media/dvb-frontends/mt312.c\nindex 961b9a2508e0..12c32c024252 100644\n--- a/drivers/media/dvb-frontends/mt312.c\n+++ b/drivers/media/dvb-frontends/mt312.c\n@@ -142,7 +142,9 @@ static inline int mt312_readreg(struct mt312_state *state,\n static inline int mt312_writereg(struct mt312_state *state,\n \t\t\t\t const enum mt312_reg_addr reg, const u8 val)\n {\n-\treturn mt312_write(state, reg, &val, 1);\n+\tu8 tmp = val;\n+\n+\treturn mt312_write(state, reg, &tmp, 1);\n }\n \n static inline u32 mt312_div(u32 a, u32 b)\ndiff --git a/drivers/media/dvb-frontends/stb0899_drv.c b/drivers/media/dvb-frontends/stb0899_drv.c\nindex 02347598277a..db5dde3215f0 100644\n--- a/drivers/media/dvb-frontends/stb0899_drv.c\n+++ b/drivers/media/dvb-frontends/stb0899_drv.c\n@@ -539,7 +539,8 @@ int stb0899_write_regs(struct stb0899_state *state, unsigned int reg, u8 *data,\n \n int stb0899_write_reg(struct stb0899_state *state, unsigned int reg, u8 data)\n {\n-\treturn stb0899_write_regs(state, reg, &data, 1);\n+\tu8 tmp = data;\n+\treturn stb0899_write_regs(state, reg, &tmp, 1);\n }\n \n /*\ndiff --git a/drivers/media/dvb-frontends/stb6100.c b/drivers/media/dvb-frontends/stb6100.c\nindex 17a955d0031b..0167a3e1ecc5 100644\n--- a/drivers/media/dvb-frontends/stb6100.c\n+++ b/drivers/media/dvb-frontends/stb6100.c\n@@ -226,12 +226,14 @@ static int stb6100_write_reg_range(struct stb6100_state *state, u8 buf[], int st\n \n static int stb6100_write_reg(struct stb6100_state *state, u8 reg, u8 data)\n {\n+\tu8 tmp = data;\n+\n \tif (unlikely(reg >= STB6100_NUMREGS)) {\n \t\tdprintk(verbose, FE_ERROR, 1, \"Invalid register offset 0x%x\", reg);\n \t\treturn -EREMOTEIO;\n \t}\n-\tdata = (data & stb6100_template[reg].mask) | stb6100_template[reg].set;\n-\treturn stb6100_write_reg_range(state, &data, reg, 1);\n+\ttmp = (tmp & stb6100_template[reg].mask) | stb6100_template[reg].set;\n+\treturn stb6100_write_reg_range(state, &tmp, reg, 1);\n }\n \n \ndiff --git a/drivers/media/dvb-frontends/stv0367.c b/drivers/media/dvb-frontends/stv0367.c\nindex f3529df8211d..1964cb7d58b7 100644\n--- a/drivers/media/dvb-frontends/stv0367.c\n+++ b/drivers/media/dvb-frontends/stv0367.c\n@@ -166,7 +166,9 @@ int stv0367_writeregs(struct stv0367_state *state, u16 reg, u8 *data, int len)\n \n static int stv0367_writereg(struct stv0367_state *state, u16 reg, u8 data)\n {\n-\treturn stv0367_writeregs(state, reg, &data, 1);\n+\tu8 tmp = data;\n+\n+\treturn stv0367_writeregs(state, reg, &tmp, 1);\n }\n \n static u8 stv0367_readreg(struct stv0367_state *state, u16 reg)\ndiff --git a/drivers/media/dvb-frontends/stv090x.c b/drivers/media/dvb-frontends/stv090x.c\nindex 7ef469c0c866..85ec19305483 100644\n--- a/drivers/media/dvb-frontends/stv090x.c\n+++ b/drivers/media/dvb-frontends/stv090x.c\n@@ -755,7 +755,9 @@ static int stv090x_write_regs(struct stv090x_state *state, unsigned int reg, u8\n \n static int stv090x_write_reg(struct stv090x_state *state, unsigned int reg, u8 data)\n {\n-\treturn stv090x_write_regs(state, reg, &data, 1);\n+\tu8 tmp = data;\n+\n+\treturn stv090x_write_regs(state, reg, &tmp, 1);\n }\n \n static int stv090x_i2c_gate_ctrl(struct stv090x_state *state, int enable)\ndiff --git a/drivers/media/dvb-frontends/stv6110x.c b/drivers/media/dvb-frontends/stv6110x.c\nindex 66eba38f1014..f0fd9605aa77 100644\n--- a/drivers/media/dvb-frontends/stv6110x.c\n+++ b/drivers/media/dvb-frontends/stv6110x.c\n@@ -97,7 +97,9 @@ static int stv6110x_write_regs(struct stv6110x_state *stv6110x, int start, u8 da\n \n static int stv6110x_write_reg(struct stv6110x_state *stv6110x, u8 reg, u8 data)\n {\n-\treturn stv6110x_write_regs(stv6110x, reg, &data, 1);\n+\tu8 tmp = data;\n+\n+\treturn stv6110x_write_regs(stv6110x, reg, &tmp, 1);\n }\n \n static int stv6110x_init(struct dvb_frontend *fe)\ndiff --git a/drivers/media/dvb-frontends/zl10039.c b/drivers/media/dvb-frontends/zl10039.c\nindex 623355fc2666..4ec9a8fb8c12 100644\n--- a/drivers/media/dvb-frontends/zl10039.c\n+++ b/drivers/media/dvb-frontends/zl10039.c\n@@ -134,7 +134,9 @@ static inline int zl10039_writereg(struct zl10039_state *state,\n \t\t\t\tconst enum zl10039_reg_addr reg,\n \t\t\t\tconst u8 val)\n {\n-\treturn zl10039_write(state, reg, &val, 1);\n+\tconst u8 tmp = val;\n+\n+\treturn zl10039_write(state, reg, &tmp, 1);\n }\n \n static int zl10039_init(struct dvb_frontend *fe)\n", "prefixes": [ "v4", "6/9" ] }