From: Martin Schwidefsky <schwidefsky@de.ibm.com>
To: Christoph Hellwig <hch@lst.de>
Cc: wein@de.ibm.com, Horst.Hummel@de.ibm.com, akpm@osdl.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/4] add compat_ioctl methods to dasd
Date: Thu, 17 Nov 2005 13:27:32 +0100 [thread overview]
Message-ID: <1132230452.5463.10.camel@localhost.localdomain> (raw)
In-Reply-To: <20051116084544.GA25181@lst.de>
On Wed, 2005-11-16 at 09:45 +0100, Christoph Hellwig wrote:
> On Tue, Nov 15, 2005 at 06:24:38PM +0100, Christoph Hellwig wrote:
> > > and doesn't work after fixing the compile problem. It's a
> > > problem with the bdev->bd_disk->private_data which is NULL at the time
> > > the partition detection code calls the BIODASDINFO and HDIO_GETGEO ioctl
> > > with ioctl_by_bdev. I don't see an easy way to fix this right now.
> >
> > my patch doesn't change anything related to dereferencing those fields.
> >
> > I see the problem that you're probably having: ioctl_by_bdev calls
> > ->ioctl without ensuring ->open has been called previously. But I don't
> > see why this couldn't have happened previously.
>
> So looking at it again I found a bug: we return EINVAL on an invalid
> ioctl, but the compat layer expects ENOIOCTLCMD so it returns using the
> generic compat bits. Returning ENOIOCTLCMD from unlocked_ioctl is fine
> aswell as the ioctl layer turns it back. The patch below fix this issue
> and the missing semicolon after lock_kernel()
Still doesn't work. The reason is ioctl_by_bdev:
int ioctl_by_bdev(struct block_device *bdev,
unsigned cmd, unsigned long arg)
{
int res;
mm_segment_t old_fs = get_fs();
set_fs(KERNEL_DS);
res = blkdev_ioctl(bdev->bd_inode, NULL, cmd, arg);
set_fs(old_fs);
return res;
}
blkdev_ioctl is explicitly called with a NULL file pointer. That can't
work with block device drivers that use unlocked ioctls. We'd need to
create a struct file with at least a valid f_dentry->d_inode->i_bdev
chain in ioctl_by_bdev to make it work with unlocked ioctls. Not nice ..
--
blue skies,
Martin
Martin Schwidefsky
Linux for zSeries Development & Services
IBM Deutschland Entwicklung GmbH
next prev parent reply other threads:[~2005-11-17 12:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-04 22:16 [PATCH 1/4] add compat_ioctl methods to dasd Christoph Hellwig
2005-11-12 9:33 ` Christoph Hellwig
2005-11-15 14:51 ` Martin Schwidefsky
2005-11-15 17:24 ` Christoph Hellwig
2005-11-16 8:45 ` Christoph Hellwig
2005-11-17 12:27 ` Martin Schwidefsky [this message]
2005-11-17 22:18 ` 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=1132230452.5463.10.camel@localhost.localdomain \
--to=schwidefsky@de.ibm.com \
--cc=Horst.Hummel@de.ibm.com \
--cc=akpm@osdl.org \
--cc=hch@lst.de \
--cc=linux-kernel@vger.kernel.org \
--cc=wein@de.ibm.com \
/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.