From: Joe Perches <joe@perches.com>
To: Arnd Bergmann <arnd@arndb.de>,
Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Michael Ira Krufky <mkrufky@linuxtv.org>,
linux-media <linux-media@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] tuners: tda8290: reduce stack usage with kasan
Date: Tue, 12 Dec 2017 08:02:47 -0800 [thread overview]
Message-ID: <1513094567.3036.54.camel@perches.com> (raw)
In-Reply-To: <CAK8P3a2=FG-cO5G0S5xssrEcX-rmem2xS-SDsaLOGfYmcHWGBQ@mail.gmail.com>
On Tue, 2017-12-12 at 15:21 +0100, Arnd Bergmann wrote:
> On Tue, Dec 12, 2017 at 1:45 PM, Mauro Carvalho Chehab
> <mchehab@kernel.org> wrote:
> > Em Tue, 12 Dec 2017 03:42:32 -0800
> > Joe Perches <joe@perches.com> 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.
Perhaps add something like
struct i2c_msg_set {
__u16 addr; /* slave address */
__u16 flags;
__u16 len; /* msg length */
const __u8 *buf; /* pointer to read-only msg data */
};
struct i2c_msg_get {
__u16 addr; /* slave address */
__u16 flags;
__u16 len; /* msg length */
__u8 *buf; /* pointer to writeable msg data */
};
to the uapi include and use that where appropriate
but where a write then read is done via a single
i2c_msg array, it's not really feasible either.
Probably better to avoid any churn and just mark
all these as static rather than static const.
prev parent reply other threads:[~2017-12-12 16:02 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-11 12:06 [PATCH] tuners: tda8290: reduce stack usage with kasan Arnd Bergmann
2017-12-11 15:09 ` Michael Ira Krufky
2017-12-11 19:34 ` Joe Perches
2017-12-11 21:17 ` Michael Ira Krufky
2017-12-12 10:24 ` Arnd Bergmann
2017-12-12 11:42 ` Joe Perches
2017-12-12 12:45 ` Mauro Carvalho Chehab
2017-12-12 14:21 ` Arnd Bergmann
2017-12-12 16:02 ` Joe Perches [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1513094567.3036.54.camel@perches.com \
--to=joe@perches.com \
--cc=arnd@arndb.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=mkrufky@linuxtv.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.