Bug 42012 - regression on 2.6.39.3 with socket/bind; still there in 3.0.4
Summary: regression on 2.6.39.3 with socket/bind; still there in 3.0.4
Status: CLOSED CODE_FIX
Alias: None
Product: Networking
Classification: Unclassified
Component: IPV4 (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Stephen Hemminger
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-08-30 02:59 UTC by Rene Meier
Modified: 2012-06-13 15:12 UTC (History)
2 users (show)

See Also:
Kernel Version: 2.6.39.3 - 3.0.4
Tree: Mainline
Regression: Yes


Attachments

Description Rene Meier 2011-08-30 02:59:31 UTC
Hi,

the regression has been introduced in 2.6.39.3 with commit d0733d2e29b652b2e7b1438ececa732e4eed98eb. I experience this with a proprietary binary program. So I cant give you the source code which fails. This program used to work before but fails after applying this patch. As far as I understand the programm is using this code for ipc communication. I have recorded the strace output of the relevant part of the program.
strace without d0733d2e29b652b2e7b1438ececa732e4eed98eb on kernel 2.6.39.2
---------------
2056  socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
2056  bind(4, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0
2056  getsockname(4, {sa_family=AF_INET, sin_port=htons(33537), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0
2056  listen(4, 5)                      = 0
2056  setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0
---------------

strace with d0733d2e29b652b2e7b1438ececa732e4eed98eb on kernel 2.6.39.2
---------------
6190  socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
6190  bind(4, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = -1 EINVAL (Invalid argument)
6190  dup(2)                            = 11
6190  fcntl64(11, F_GETFL)              = 0x8002 (flags O_RDWR|O_LARGEFILE)
6190  fstat64(11, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 3), ...}) = 0
6190  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x576ac000
6190  _llseek(11, 0, 0xffa03de4, SEEK_CUR) = -1 ESPIPE (Illegal seek)
6190  write(11, "ERROR: Failed to bind to interne"..., 66) = 66
6190  close(11)                         = 0
---------------

Btw, i have not enough knowledge on this topic to decide whether its the programs fault or the kernels fault. The binary program is sybyl8.1 from tripos.

Best regards, Rene
Comment 1 Florian Mickler 2012-01-12 21:30:09 UTC
A patch referencing this bug report has been merged in Linux v3.1-rc10:

commit 29c486df6a208432b370bd4be99ae1369ede28d8
Author: Eric Dumazet <eric.dumazet@gmail.com>
Date:   Tue Aug 30 18:57:00 2011 -0400

    net: ipv4: relax AF_INET check in bind()

Note You need to log in before you can comment on or make changes to this bug.