Subject: Re: "net: remove sock_iocb" breaks ip tool - "Cannot send dump request : Connection refused"

From: Alban Browaeys <[email-masked]>
Date: Thu, 05 Feb 2015 11:14:44 +0100

Le jeudi 05 février 2015 à 10:41 +0100, Christoph Hellwig a écrit :
> On Thu, Feb 05, 2015 at 10:36:01AM +0100, Alban Browaeys wrote:
> > "ip a" returns "Cannot send dump request : Connection refused" until I
> > revert commit 7cc05662682d ("net: remove sock_iocb").
> > This as root or as user.
> > 
> > NetworkManager is affected too.
> > 
> > Could siocb cache the cookie ? 
> 
> Ca you strace what syscall on what socket causes that return?
> 

Rebuilt the kernel with the reverted undone.
I cannot reproduce anymore !

For the record is the strace from when it was broken (sudo strace -f ip
a):  af_netlink, send

execve("/sbin/ip", ["ip", "a"], [/* 19 vars */]) = 0
brk(0)                                  = 0x59000
uname({sys="Linux", node="odroid.prahal.homelinux.net", ...}) = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f2a000
access("/etc/ld.so.preload", R_OK)      = 0
open("/etc/ld.so.preload", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
close(3)                                = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=195089, ...}) = 0
mmap2(NULL, 195089, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6ed5000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\240\t\0\0004\0\0\0"..., 512) = 512
lseek(3, 8664, SEEK_SET)                = 8664
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1160) = 1160
lseek(3, 8328, SEEK_SET)                = 8328
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 53) = 53
fstat64(3, {st_mode=S_IFREG|0644, st_size=9824, ...}) = 0
mmap2(NULL, 73912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6ec2000
mprotect(0xb6ec4000, 61440, PROT_NONE)  = 0
mmap2(0xb6ed3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb6ed3000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0Mw\1\0004\0\0\0"..., 512) = 512
lseek(3, 904092, SEEK_SET)              = 904092
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2880) = 2880
lseek(3, 900644, SEEK_SET)              = 900644
read(3, "A4\0\0\0aeabi\0\1*\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\3\f"..., 53) = 53
fstat64(3, {st_mode=S_IFREG|0755, st_size=906972, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f29000
mmap2(NULL, 976296, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6dd3000
mprotect(0xb6eac000, 65536, PROT_NONE)  = 0
mmap2(0xb6ebc000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd9000) = 0xb6ebc000
mmap2(0xb6ebf000, 9640, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6ebf000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f28000
set_tls(0xb6f284c0, 0xb6f2d050, 0xb6f28ba8, 0xb6f284c0, 0xb6f2d050) = 0
mprotect(0xb6ebc000, 8192, PROT_READ)   = 0
mprotect(0xb6ed3000, 4096, PROT_READ)   = 0
mprotect(0xb6f2c000, 4096, PROT_READ)   = 0
munmap(0xb6ed5000, 195089)              = 0
socket(PF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE) = 3
setsockopt(3, SOL_SOCKET, SO_SNDBUF, [32768], 4) = 0
setsockopt(3, SOL_SOCKET, SO_RCVBUF, [1048576], 4) = 0
bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, pid=1379, groups=00000000}, [12]) = 0
gettimeofday({1423072550, 843516}, NULL) = 0
send(3, "(\0\0\0\22\0\1\3']\322T\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 40, 0) = -1 ECONNREFUSED (Connection refused)
dup(2)                                  = 4
fcntl64(4, F_GETFL)                     = 0x20002 (flags O_RDWR|O_LARGEFILE)
brk(0)                                  = 0x59000
brk(0x7a000)                            = 0x7a000
fstat64(4, {st_mode=S_IFCHR|0600, st_rdev=makedev(204, 65), ...}) = 0
ioctl(4, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B115200 opost isig icanon echo ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f27000
_llseek(4, 0, 0xbee1aa18, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
write(4, "Cannot send dump request: Connec"..., 45Cannot send dump request: Connection refused
) = 45
close(4)                                = 0
munmap(0xb6f27000, 4096)                = 0
exit_group(1)                           = ?
+++ exited with 1 +++