Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752349AbdLLOVx (ORCPT ); Tue, 12 Dec 2017 09:21:53 -0500 Received: from mail-ot0-f173.google.com ([74.125.82.173]:46816 "EHLO mail-ot0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751542AbdLLOVs (ORCPT ); Tue, 12 Dec 2017 09:21:48 -0500 X-Google-Smtp-Source: ACJfBoseSfqFIBDeGcGmNkJ4Lfx9Rh2xSOoOW1PvkxAxL9R/n0JfdnlqoWs7VYyHH3Obm+5Ts1Bf2tx+oH5AU48tApU= MIME-Version: 1.0 In-Reply-To: <20171212104530.46ac4ffe@vento.lan> References: <20171211120612.3775893-1-arnd@arndb.de> <1513020868.3036.0.camel@perches.com> <1513078952.3036.36.camel@perches.com> <20171212104530.46ac4ffe@vento.lan> From: Arnd Bergmann Date: Tue, 12 Dec 2017 15:21:47 +0100 X-Google-Sender-Auth: QTGln_QXXtDfu1giplA5f2cjPBg Message-ID: Subject: Re: [PATCH] tuners: tda8290: reduce stack usage with kasan To: Mauro Carvalho Chehab Cc: Joe Perches , Michael Ira Krufky , linux-media , LKML Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2055 Lines: 56 On Tue, Dec 12, 2017 at 1:45 PM, Mauro Carvalho Chehab wrote: > Em Tue, 12 Dec 2017 03:42:32 -0800 > Joe Perches escreveu: > >> > I actually thought about marking them 'const' here before sending >> > (without noticing the changelog text) and then ran into what must >> > have led me to drop the 'const' originally: tuner_i2c_xfer_send() >> > takes a non-const pointer. This can be fixed but it requires >> > an ugly cast: >> >> Casting away const is always a horrible hack. >> >> Until it could be changed, my preference would >> be to update the changelog and perhaps add to >> the changelog the reason why it can not be const >> as detailed below. >> >> ie: xfer_send and xfer_xend_recv both take a >> non-const unsigned char * Ok. > Perhaps, on a separate changeset, we could change I2C routines to > accept const unsigned char pointers. This is unrelated to tda8290 > KASAN fixes. So, it should go via I2C tree, and, once accepted > there, we can change V4L2 drivers (and other drivers) accordingly. I don't see how that would work unfortunately. i2c_msg contains a pointer to the data, and that is used for both input and output, including arrays like struct i2c_msg msgs[] = { { .addr = dvo->slave_addr, .flags = 0, .len = 1, .buf = &addr, }, { .addr = dvo->slave_addr, .flags = I2C_M_RD, .len = 1, .buf = val, } }; that have one constant output pointer and one non-constant input pointer. We could add an anonymous union for 'buf' to make that two separate pointers, but that's barely any better than the cast, and it would break the named initializers in the example above, at least on older compilers. Adding a second pointer to i2c_msg would add a bit of bloat and also require tree-wide changes or ugly hacks. Arnd