From: Namhyung Kim <namhyung@gmail.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>, Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/4] initramfs: remove sparse warnings
Date: Mon, 23 Aug 2010 23:59:43 +0900 [thread overview]
Message-ID: <1282575583.1659.4.camel@leonhard> (raw)
In-Reply-To: <201008222233.01739.arnd@arndb.de>
2010-08-22 (일), 22:33 +0200, Arnd Bergmann:
> On Friday 20 August 2010 17:36:41 Namhyung Kim wrote:
> >
> > 2010-08-20 (금), 13:00 +0100, Al Viro:
> > > No. This code should NOT use the VFS guts, TYVM. The whole fscking point
> > > is that this puppy is a sequence of plain vanilla syscalls, ideally run
> > > simply in userland thread. We used to have a magical mystery shite in there
> > > and it had been a huge PITA.
> >
> > So is it worth to work on removing the warnings like this patchset does?
> > Or else, how can I improve the code even a bit? Can you please give me a
> > direction?
>
> It would be useful to add annotations in those places where they are
> obviously just missing but don't require adding __force.
> Even better would be patches that fix actual bugs found by sparse.
>
> Simply throwing in extra __force arguments will just make people
> nervous, because it is often a sign of papering over a bug instead
> of fixing it, and warnings in the core kernel are there exactly
> because there is no easy correct fix for them.
>
> Try producing patches that clean up the code and result in using
> fewer annotations and especially few __force where possible.
> Also, in places where you need __force, make sure that a person
> reading that code understands why it's needed and that the use is
> correct (or at least permissable).
>
> One possible solution in this particular case would be to add
> helper functions like
>
> /* wrapper for sys_newlstat for use in the init code */
> static inline int kern_newlstat(const char * filename, struct stat * statbuf)
> {
> mm_segment_t fs = get_fs();
> int ret;
>
> set_fs(KERNEL_DS);
> ret = sys_newlstat((const char __user __force*)filename,
> (struct stat __user __force *)statbuf);
> set_fs(fs);
>
> return ret;
> }
>
> Such a function makes it clear that it can only accept a kernel pointer,
> and it documents how the conversion to a __user pointer happens (by
> calling set_fs).
> Then again, it adds some bloat, and it may encourage people to do the
> same thing in device drivers, which could be argued against such helpers.
>
> In general, my recommendation would be to leave code alone if you can't
> come up with a patch that clearly improves it. There is enough
> bad code in the kernel that can use some help along the lines of
> your other patches, so you may want to focus on that.
>
> Arnd
Thank you Arnd for the precious comments and advices. This really helps
me.
--
Regards,
Namhyung Kim
prev parent reply other threads:[~2010-08-23 14:59 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-19 3:37 [PATCH 0/4] initramfs: remove sparse warnings Namhyung Kim
2010-08-19 3:37 ` [PATCH 1/4] initramfs: refactor clean_path() Namhyung Kim
2010-08-19 3:37 ` [PATCH 2/4] initramfs: mark dirp as a __user pointer on clean_rootfs() Namhyung Kim
2010-08-19 3:37 ` [PATCH 3/4] initramfs: mark collect buffers as __user pointers Namhyung Kim
2010-08-19 3:37 ` [PATCH 4/4] initramfs: add missing __user markup Namhyung Kim
2010-08-19 14:38 ` [PATCH 0/4] initramfs: remove sparse warnings Arnd Bergmann
2010-08-19 16:57 ` Namhyung Kim
2010-08-20 12:00 ` Al Viro
2010-08-20 15:36 ` Namhyung Kim
2010-08-22 20:33 ` Arnd Bergmann
2010-08-23 14:59 ` Namhyung Kim [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=1282575583.1659.4.camel@leonhard \
--to=namhyung@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/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.