From: Kevin Corry <corryk@us.ibm.com>
To: Andi Kleen <ak@suse.de>
Cc: linux-kernel@vger.kernel.org, evms-devel@lists.sourceforge.net
Subject: Re: [PATCH] EVMS core 3/4: evms_ioctl.h
Date: Thu, 3 Oct 2002 17:30:46 -0500 [thread overview]
Message-ID: <0210031730460A.05904@boiler> (raw)
In-Reply-To: <p73vg4jr1ic.fsf@oldwotan.suse.de>
On Thursday 03 October 2002 10:22, Andi Kleen wrote:
> Kevin Corry <corryk@us.ibm.com> writes:
> > +struct evms_plugin_ioctl_pkt {
> > + ulong feature_id;
> > + s32 feature_command;
> > + s32 status;
> > + void *feature_ioctl_data;
> > +};
>
> This is passed between user space and kernel space right?
>
> For 32bit emulation on 64bit purposes you should always use explicitely
> sized types (u32/u64 not ulong). The pointer will still need to be
> converted. Best is to avoid pointers if possible (e.g. couldn't the data
> just be tacked on here?)
The ulong is definitely wrong. Should be u32.
In general, we are aware of the issues with using 32-bit user-space on top of
64-bit kernel. If you take a look at evms.c you will find several functions
that get registered at init-time with the 32-to-64-bit ioctl conversion code.
These take care of translating pointers from user-space to kernel-space in
this situation. EVMS has been tested on ppc64 with success, and we have
someone currently running tests on sparc64 to make sure it works there as
well.
> > +#define EVMS_EVENT_END_OF_DISCOVERY 0
> > +
> > +/**
> > + * struct evms_notify_pkt - evms event notification ioctl packet
> > definition + * @command: 0 = unregister, 1 = register
> > + * @eventry: event structure
> > + * @status: returned operation status
> > + *
> > + * ioctl packet definition for EVMS_PROCESS_NOTIFY_EVENT ioctl
> > + **/
> > +struct evms_notify_pkt {
> > + s32 command;
> > + struct evms_event eventry;
>
> If eventry contains any potential 64bit stuff it would be best to align it
> to 64bit explicitely
Correct. In this particular case we are safe, since struct evms_event only
contains 32bit fields. But we may switch this around anyway just to be even
safer.
> > + **/
> > +struct evms_user_disk_info_pkt {
> > + u32 status;
> > + u32 flags;
> > + u64 disk_handle;
> > + u32 disk_dev;
> > + u32 geo_sectors;
> > + u32 geo_heads;
> > + u64 geo_cylinders;
>
> emulation trap: on x86-64/ia64 u64 have different alignment on 32bit vs
> 64bit (4 bytes vs natural). Please make sure that u64 is always explicitely
> 64bit aligned. It isn't here.
>
> > + u64 disk_handle;
> > + s32 io_flag;
> > + u64 starting_sector;
>
> Same issue
Yep. We'll get those fixed. Thanks for pointing these out.
>
> It would be best to clean the ABI up now when you can still change it.
> Otherwise the emulation functions later will be very ugly
> (take a look at the LVM horror in arch/x86_64/ia32/ia32_ioctl.c for a
> bad example - LVM1 wasn't cleaned up in time)
>
> -Andi
Thanks for the suggestions!
--
Kevin Corry
corryk@us.ibm.com
http://evms.sourceforge.net/
next prev parent reply other threads:[~2002-10-03 22:58 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <02100307370503.05904@boiler.suse.lists.linux.kernel>
2002-10-03 15:22 ` [PATCH] EVMS core 3/4: evms_ioctl.h Andi Kleen
2002-10-03 22:30 ` Kevin Corry [this message]
2002-10-03 23:49 ` Andi Kleen
2002-10-03 12:37 Kevin Corry
2002-10-03 15:00 ` Christoph Hellwig
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=0210031730460A.05904@boiler \
--to=corryk@us.ibm.com \
--cc=ak@suse.de \
--cc=evms-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.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.