From: jcd@tribudubois.net
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v3] avoid compilation warning/errors on up to date compilers/glibc
Date: Wed, 17 Jun 2009 14:40:57 +0100 (GMT+01:00) [thread overview]
Message-ID: <28684080.110231245246057655.JavaMail.root@srv-05.w4a.fr> (raw)
In-Reply-To: <16433944.110211245245827573.JavaMail.root@srv-05.w4a.fr>
----- "Anthony Liguori" <anthony@codemonkey.ws> a écrit :
> Jean-Christophe Dubois wrote:
> > Some system calls are now requiring to have their return value
> checked.
> >
> > Without this a warning is emitted and in the case a qemu an error
> is
> > triggered as qemu is considering warnings as errors.
> >
> > For example:
> >
> > block/cow.c: In function ‘cow_create’:
> > block/cow.c:251: error: ignoring return value of ‘write’, declared
> with
> > attribute warn_unused_result
> > block/cow.c:253: error: ignoring return value of ‘ftruncate’,
> declared
> > with attribute warn_unused_result
> >
> > This is an attempt at removing all these warnings to allow a clean
> > compilation with up to date compilers/distributions.
> >
> > The second version fixes an error detected by Stuart Brady as well
> > as some coding style issues. Note however that some of the
> > modified files don't follow the qemu coding style (using tabs
> > instead of spaces).
> >
> > The Third version add one ftruncate() system call error handling
> that
> > was missing from V2 (in block/vvfat.c).
> >
> > Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
> >
> > ---
> > block.c | 3 ++-
> > block/bochs.c | 3 ++-
> > block/cow.c | 12 ++++++++++--
> > block/qcow.c | 22 ++++++++++++++++------
> > block/qcow2.c | 37 +++++++++++++++++++++++++++++--------
> > block/raw-posix.c | 9 ++++++---
> > block/vmdk.c | 38 ++++++++++++++++++++++++++++----------
> > block/vvfat.c | 24 +++++++++++++++++-------
> > linux-user/mmap.c | 7 +++++--
> > linux-user/path.c | 6 +++++-
> > osdep.c | 5 ++++-
> > slirp/misc.c | 3 ++-
> > usb-linux.c | 3 +--
> > vl.c | 14 ++++++++++----
> > 14 files changed, 137 insertions(+), 49 deletions(-)
> >
> > diff --git a/block.c b/block.c
> > index aca5a6d..c78d66a 100644
> > --- a/block.c
> > +++ b/block.c
> > @@ -371,7 +371,8 @@ int bdrv_open2(BlockDriverState *bs, const char
> *filename, int flags,
> > snprintf(backing_filename, sizeof(backing_filename),
> > "%s", filename);
> > else
> > - realpath(filename, backing_filename);
> > + if (!realpath(filename, backing_filename))
> > + return -1;
> >
> > bdrv_qcow2 = bdrv_find_format("qcow2");
> > options = parse_option_parameters("",
> bdrv_qcow2->create_options, NULL);
> > diff --git a/block/bochs.c b/block/bochs.c
> > index bac81c4..0d614eb 100644
> > --- a/block/bochs.c
> > +++ b/block/bochs.c
> > @@ -199,7 +199,8 @@ static inline int
> seek_to_sector(BlockDriverState *bs, int64_t sector_num)
> > // read in bitmap for current extent
> > lseek(s->fd, bitmap_offset + (extent_offset / 8), SEEK_SET);
> >
> > - read(s->fd, &bitmap_entry, 1);
> > + if (read(s->fd, &bitmap_entry, 1) != 1)
> > + return -1; // not allocated
> >
>
> This is no more correct than before. read() can return EINTR and that
>
> should be handled appropriately. Elsewhere, read() can return partial
>
> results and we ought to handle that properly.
It handles all cases except EINTR. And in the actual code base EINTR and __all other__ error cases are not handled. So as of today EINTR is not handled propely (as well as all other error cases).
So this consider EINTR as an error when it could be handled in a nicer way. Previously no ERRORS were considered as an error. What is best?
> Using -D_FORTIFY_SOURCES=0 will eliminate these warnings. If we're
> going to fix these things, we should fix them properly.
It just hides the problem and fix nothing but the compilation. ERRORS will still be ignored/discarded without any warning. If the glibc designers are insisting on the fact that some system calls should have their return value checked there must be a reason. Is this really the best practice here (to just ignore errors)?
> Regards,
>
> Anthony Liguori
next parent reply other threads:[~2009-06-17 13:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <16433944.110211245245827573.JavaMail.root@srv-05.w4a.fr>
2009-06-17 13:40 ` jcd [this message]
2009-06-17 14:03 ` [Qemu-devel] [PATCH v3] avoid compilation warning/errors on up to date compilers/glibc Paul Brook
2009-06-17 18:41 ` Jean-Christophe Dubois
2009-06-18 13:31 ` Luiz Capitulino
2009-06-18 16:39 ` jcd
2009-06-17 6:03 Jean-Christophe Dubois
2009-06-17 13:26 ` Anthony Liguori
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=28684080.110231245246057655.JavaMail.root@srv-05.w4a.fr \
--to=jcd@tribudubois.net \
--cc=anthony@codemonkey.ws \
--cc=qemu-devel@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).