netdev
[Top] [All Lists]

Re: PATCH 2.4.0.9.2: export ethtool interface

To: Andi Kleen <ak@xxxxxx>
Subject: Re: PATCH 2.4.0.9.2: export ethtool interface
From: Andrew Morton <andrewm@xxxxxxxxxx>
Date: Thu, 21 Sep 2000 22:57:11 +1100
Cc: Donald Becker <becker@xxxxxxxxx>, "howling@xxxxxxxx" <havanna_moon@xxxxxxx>, netdev@xxxxxxxxxxx
References: <39C883CF.9FB262FC@uow.edu.au> <Pine.LNX.4.10.10009201152510.1031-100000@vaio.greennet> <39C9F123.D8FA4F68@uow.edu.au>, <39C9F123.D8FA4F68@uow.edu.au>; from Andrew Morton on Thu, Sep 21, 2000 at 01:30:42PM +0200 <20000921133302.36264@colin.muc.de>
Sender: owner-netdev@xxxxxxxxxxx
Hi, Andi.

Andi Kleen wrote:
> 
> ..
> > Yes.  On 2.4 (at least) there is nothing to prevent the driver's ioctl()
> > function from running on two or more CPUs simultaneously.
> 
> There is (2.4.0test9pre2):
> 
> asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long 
> arg)
> {
>         struct file * filp;
>         unsigned int flag;
>         int on, error = -EBADF;
> 
>         filp = fget(fd);
>         if (!filp)
>                 goto out;
>         error = 0;
>         lock_kernel();                   <--------------
>         switch (cmd) {
> 

But sys_ioctl calls....

int sock_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
            unsigned long arg)
{
        struct socket *sock;
        int err;

        unlock_kernel();                   <---------------
        sock = socki_lookup(inode);
        sock = socki_lookup(inode);
        err = sock->ops->ioctl(sock, cmd, arg);

<Prev in Thread] Current Thread [Next in Thread>