** Description changed: + == Begin SRU == + [Impact] + This bug is a regression of the fix applied under bug 1160490. + The bug is that 'ifquery --list' will try to obtain a lock on a file in /run, which will fail with an error message of 'Bad file descriptor'. + + The changes applied here are a backport of upstream fix fb3055c2c4f0 + [1]. + + [1] + + [Test Case] + Ideally both the test case from bug 1160490 [2] and the following test case should be done. + + $ sudo ifquery --list --allow auto + lo + eth0 + $ ifquery --list --allow auto + lo + eth0 + + Success is a list of the 'auto' interfaces that in + /etc/network/interfaces. (in a cloud image, thats eth0 and lo). This + should work both as root and non-root. Failure would show 'failed to + lock lockfile' or non-zero exit value. + + Additionally, verify that you can query something other than the default interfaces file as root and non-root. + $ ( echo "auto eth1"; echo "iface eth1 inet dhcp"; ) > /tmp/my.interfaces + $ sudo ifquery --list --allow auto --interfaces=/tmp/my.interfaces + lo + eth1 + $ ifquery --list --allow auto --interfaces=/tmp/my.interfaces + lo + eth1 + + the 'lo' output is expected as 'lo' is automatically auto. Failure here + would be the same 'failed to lock lockfile' or non-zero exit. + + It also surely wouldn't hurt to do: + $ sudo ifdown eth0; sudo ifup eth0 + + Just to make sure that functions. + + [Regression Potential] + * (from bug 1160490) This fix backports a change from upstream ifupdown. Instead of locking a statefile it locks a lockfile. + * the change here is very trivial. It chooses to not fail on failure to get lockfile if the operation is 'no_act' (see [1]). + + [1] http://anonscm.debian.org/hg/collab-maint/ifupdown/rev/fb3055c2c4f0 + [2] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/996369/comments/35 + + === End SRU === + + $ sudo ifquery --list --allow auto; echo $?; ifquery: failed to lock lockfile /run/network/.ifstate.lock: Bad file descriptor 1 This seems possibly quite serious as /etc/network/if-up.d/upstart uses this program to determine the "auto" interfaces and then emits static- network-up. This reproduces on a fresh saucy image with serial=20130916. Also interesting, possibly related and possibly a bug in and of itself: $ cp /etc/network/interfaces /tmp/interfaces $ sudo ifquery --interfaces /tmp/interfaces --list --allow=auto ifquery: failed to lock lockfile /run/network/.ifstate.lock: Bad file descriptor Seems odd that it would do anything with /run/network/.ifstate.lock in this case since, by doing so, it means i'd have to have privilege to read that file in order to have it parse my provided --interfaces= file. For reference, on raring instance as non-root: $ ifquery --list --allow auto lo eth0 - Related bugs: - * bug 1160490: race condition updating statefile + * bug 1160490: race condition updating statefile ProblemType: Bug DistroRelease: Ubuntu 13.10 Package: ifupdown 0.7.44ubuntu2 ProcVersionSignature: User Name 3.11.0-7.13-generic 3.11.0 Uname: Linux 3.11.0-7-generic x86_64 ApportVersion: 2.12.1-0ubuntu4 Architecture: amd64 Date: Mon Sep 16 14:02:41 2013 Ec2AMI: ami-000004dd Ec2AMIManifest: FIXME Ec2AvailabilityZone: nova Ec2InstanceType: m1.tiny Ec2Kernel: unavailable Ec2Ramdisk: unavailable MarkForUpload: True ProcEnviron: TERM=screen PATH=(custom, no user) XDG_RUNTIME_DIR=<set> LANG=en_US.UTF-8 SHELL=/bin/bash SourcePackage: ifupdown UpgradeStatus: No upgrade log present (probably fresh install)
** Description changed: == Begin SRU == [Impact] This bug is a regression of the fix applied under bug 1160490. The bug is that 'ifquery --list' will try to obtain a lock on a file in /run, which will fail with an error message of 'Bad file descriptor'. The changes applied here are a backport of upstream fix fb3055c2c4f0 [1]. - [1] - [Test Case] Ideally both the test case from bug 1160490 [2] and the following test case should be done. - $ sudo ifquery --list --allow auto - lo - eth0 - $ ifquery --list --allow auto - lo - eth0 + $ sudo ifquery --list --allow auto + lo + eth0 + $ ifquery --list --allow auto + lo + eth0 Success is a list of the 'auto' interfaces that in /etc/network/interfaces. (in a cloud image, thats eth0 and lo). This should work both as root and non-root. Failure would show 'failed to lock lockfile' or non-zero exit value. Additionally, verify that you can query something other than the default interfaces file as root and non-root. - $ ( echo "auto eth1"; echo "iface eth1 inet dhcp"; ) > /tmp/my.interfaces - $ sudo ifquery --list --allow auto --interfaces=/tmp/my.interfaces - lo - eth1 - $ ifquery --list --allow auto --interfaces=/tmp/my.interfaces - lo - eth1 + $ ( echo "auto eth1"; echo "iface eth1 inet dhcp"; ) > /tmp/my.interfaces + $ sudo ifquery --list --allow auto --interfaces=/tmp/my.interfaces + lo + eth1 + $ ifquery --list --allow auto --interfaces=/tmp/my.interfaces + lo + eth1 the 'lo' output is expected as 'lo' is automatically auto. Failure here would be the same 'failed to lock lockfile' or non-zero exit. It also surely wouldn't hurt to do: - $ sudo ifdown eth0; sudo ifup eth0 + $ sudo ifdown eth0; sudo ifup eth0 Just to make sure that functions. [Regression Potential] - * (from bug 1160490) This fix backports a change from upstream ifupdown. Instead of locking a statefile it locks a lockfile. - * the change here is very trivial. It chooses to not fail on failure to get lockfile if the operation is 'no_act' (see [1]). + * (from bug 1160490) This fix backports a change from upstream ifupdown. Instead of locking a statefile it locks a lockfile. + * the change here is very trivial. It chooses to not fail on failure to get lockfile if the operation is 'no_act' (see [1]). [1] http://anonscm.debian.org/hg/collab-maint/ifupdown/rev/fb3055c2c4f0 [2] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/996369/comments/35 === End SRU === - $ sudo ifquery --list --allow auto; echo $?; ifquery: failed to lock lockfile /run/network/.ifstate.lock: Bad file descriptor 1 This seems possibly quite serious as /etc/network/if-up.d/upstart uses this program to determine the "auto" interfaces and then emits static- network-up. This reproduces on a fresh saucy image with serial=20130916. Also interesting, possibly related and possibly a bug in and of itself: $ cp /etc/network/interfaces /tmp/interfaces $ sudo ifquery --interfaces /tmp/interfaces --list --allow=auto ifquery: failed to lock lockfile /run/network/.ifstate.lock: Bad file descriptor Seems odd that it would do anything with /run/network/.ifstate.lock in this case since, by doing so, it means i'd have to have privilege to read that file in order to have it parse my provided --interfaces= file. For reference, on raring instance as non-root: $ ifquery --list --allow auto lo eth0 Related bugs: * bug 1160490: race condition updating statefile ProblemType: Bug DistroRelease: Ubuntu 13.10 Package: ifupdown 0.7.44ubuntu2 ProcVersionSignature: User Name 3.11.0-7.13-generic 3.11.0 Uname: Linux 3.11.0-7-generic x86_64 ApportVersion: 2.12.1-0ubuntu4 Architecture: amd64 Date: Mon Sep 16 14:02:41 2013 Ec2AMI: ami-000004dd Ec2AMIManifest: FIXME Ec2AvailabilityZone: nova Ec2InstanceType: m1.tiny Ec2Kernel: unavailable Ec2Ramdisk: unavailable MarkForUpload: True ProcEnviron: TERM=screen PATH=(custom, no user) XDG_RUNTIME_DIR=<set> LANG=en_US.UTF-8 SHELL=/bin/bash SourcePackage: ifupdown UpgradeStatus: No upgrade log present (probably fresh install) -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1226067 Title: ifquery fails with bad file descriptor To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1226067/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs