[Drbd-dev] Bug in latest 8.4-git

Lars Ellenberg lars.ellenberg at linbit.com
Wed Oct 8 11:37:57 CEST 2014


On Mon, Oct 06, 2014 at 08:21:15PM +0400, Igor Novgorodov wrote:
> I didn't found any bugtracker for DRBD project, so i reported the bug here.

Right thing to do. Thank you.

> ENOIOCTLCMD is returned in several places in net/socket.c and
> net/ipv4/tcp.c,
> it seems to have something to do with 32-bit code emulation on
> 64-bit kernel:
> 
> #ifdef CONFIG_COMPAT
> static int inet_compat_ioctl(struct socket *sock, unsigned int cmd,
> unsigned long arg)
> {
>          struct sock *sk = sock->sk;
>          int err = -ENOIOCTLCMD;
> 
>          if (sk->sk_prot->compat_ioctl)
>                  err = sk->sk_prot->compat_ioctl(sk, cmd, arg);
> 
>          return err;
> }
> #endif
> 
> CONFIG_COMPAT is only defined if 32-bit emulation is enabled in kernel.
> 
> I've just rebuilt kernel with CONFIG_X86_X32 and drbd-8.4-git
> started to work fine,
> so the problem is there, somewhere in 64/32 compatibility layer :)

Uh?
That is ... unexpected.

->listen() should do any ioctls, though?
and there is just kernel code talking to kernel code,
so why would CONFIG_X86_X32 matter at all?

Can you double check, please:
Is that reproducible, i.e., if you swich that CONFIG off again,
the error comes back?

(does not reproduce here... yet)

	Lars



More information about the drbd-dev mailing list