From: Riku Voipio <riku.voipio@iki.fi>
To: Jamie Lokier <jamie@shareable.org>
Cc: qemu-devel@nongnu.org, Arnaud Patard <arnaud.patard@rtp-net.org>
Subject: Re: [Qemu-devel] [PATCH] fix fcntl support in linux-user.
Date: Tue, 21 Apr 2009 20:58:58 +0300 [thread overview]
Message-ID: <20090421175858.GA17579@kos.to> (raw)
In-Reply-To: <20090421143952.GB6375@shareable.org>
On Tue, Apr 21, 2009 at 03:39:52PM +0100, Jamie Lokier wrote:
> > explict size for table and check for not overflowing?
> And check for unset entries. The new code doesn't return EINVAL for
> unknown commands as it should. (But it calls the host with a zero
> command _if_ the target command is smaller than the table... which
> results in EINVAL). The old code wasn't perfect, passing junk command
> values to the host that it didn't recognise.
> Also, are TARGET_F_GETLK64 and TARGET_F_GETLK distinct values on
> 64-bit hosts - or even exist at all?
The old code appears to be a slightly incoherant mix of fcntl, fcntl64,
GETLK64, GETLK, ... and in a need of major cleanup, too.
> > > - switch(arg2){
> > > - case TARGET_F_GETLK64:
> > > - cmd = F_GETLK64;
> > > - break;
> > > - case TARGET_F_SETLK64:
> > > - cmd = F_SETLK64;
> > > - break;
> > > - case TARGET_F_SETLKW64:
> > > - cmd = F_SETLK64;
> > > - break;
> > > - default:
> > > - cmd = arg2;
> > > - break;
> > > - }
> > > + cmd = target_to_host_fcntl_cmd[arg2];
> The new code behaves differently for unknown arg2 values. The old
> code passed junk to the host kernel; the new code passes zero if arg2
> < the table size, and reads outside the array otherwise. Both are
> surely wrong? Simply return EINVAL if arg2 isn't recognised.
note that that was just the fcntl64 syscall, the other place was fcntl.
> I'm inclined to keeping the switch, adding the other cases
> (TARGET_F_GETLK etc.), #ifdef around the ..64 ones, and making the
> default case return EINVAL explicitly. A table lookup wouldn't save
> anything once you've checked its bounds and for the no-entry case.
> room.
My original idea was that a mapping function would make it clearer
what is being done, and the main save being able to use it from
two places (fcntl and fcntl64).
next prev parent reply other threads:[~2009-04-21 17:59 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-19 20:45 [Qemu-devel] [PATCH] fix fcntl support in linux-user Arnaud Patard
2009-04-20 13:22 ` Riku Voipio
2009-04-21 8:21 ` Arnaud Patard
2009-04-21 12:51 ` Riku Voipio
2009-04-21 14:39 ` Jamie Lokier
2009-04-21 17:58 ` Riku Voipio [this message]
2009-04-22 10:04 ` Arnaud Patard
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=20090421175858.GA17579@kos.to \
--to=riku.voipio@iki.fi \
--cc=arnaud.patard@rtp-net.org \
--cc=jamie@shareable.org \
--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).