Hello, Thanks for enabling this patch in proposed. I have performed a verification of the fix on Xenial HWE.
With 4.8.0-52 (current linux-generic-hwe-16.04) the error is consistently reproduced, as can be seen in the following lines: root@juju-niedbalski-xenial-machine-30:/home/ubuntu# uname -a Linux juju-niedbalski-xenial-machine-30 4.8.0-52-generic #55~16.04.1-Ubuntu SMP Fri Apr 28 14:36:29 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux root@juju-niedbalski-xenial-machine-30:/home/ubuntu# /usr/bin/dhcp_release ns-8382c038-49 192.168.21.14 FA:16:3E:45:6F:AF root@juju-niedbalski-xenial-machine-30:/home/ubuntu# more /var/lib/neutron/dhcp/72dd7d69-9107-45a2-bc0f-43dfe06fcbbb/addn_hosts 192.168.21.1 host-192-168-21-1.openstacklocal host-192-168-21-1 192.168.21.2 host-192-168-21-2.openstacklocal host-192-168-21-2 192.168.21.6 host-192-168-21-6.openstacklocal host-192-168-21-6 192.168.21.14 host-192-168-21-14.openstacklocal host-192-168-21-14 192.168.21.7 host-192-168-21-7.openstacklocal host-192-168-21-7 After installing the latest linux-generic-hwe-16.04-edge, the lease is correctly removed, fixing the reported issue. root@juju-niedbalski-xenial-machine-30:/home/ubuntu# uname -a Linux juju-niedbalski-xenial-machine-30 4.10.0-21-generic #23~16.04.1-Ubuntu SMP Tue May 2 12:57:17 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux root@juju-niedbalski-xenial-machine-30:/home/ubuntu# /usr/bin/dhcp_release ns-8382c038-49 192.168.21.6 fa:16:3e:4c:fb:e4 root@juju-niedbalski-xenial-machine-30:/home/ubuntu# more /var/lib/neutron/dhcp/72dd7d69-9107-45a2-bc0f-43dfe06fcbbb/leases 1494092249 fa:16:3e:d0:f7:1b 192.168.21.7 host-192-168-21-7 * 1494092249 fa:16:3e:f8:67:3b 192.168.21.2 host-192-168-21-2 * 1494092249 fa:16:3e:9f:05:3d 192.168.21.1 host-192-168-21-1 * Marking verification-done-yakkety. ** Tags removed: verification-needed-yakkety ** Tags added: verification-done-yakkety -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1683982 Title: net/ipv4: original ingress device index set as the loopback interface. Status in kolla: New Status in linux package in Ubuntu: Fix Released Status in linux source package in Yakkety: Fix Committed Status in linux source package in Zesty: Fix Released Bug description: [Environment] # lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.2 LTS Release: 16.04 Codename: xenial # uname -a Linux juju-niedbalski-xenial-machine-12 4.8.0-46-generic #49~16.04.1-Ubuntu SMP Fri Mar 31 14:51:03 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux [Description] We identified a bug in one of the utilities provided by dnsmasq, the 'dhcp_release' utility which is executed as part of the DHCP lease cleanup mechanism by Neutron once a network resource is freed. We noticed that some packets were discarded by the DHCP server (dnsmasq) in Ubuntu systems running a kernel >= 4.7. The reason was the ipi_ifindex field on the pktinfo was incorrectly assumed to be 1 (loopback), this causes the message to be ignored by the dnsmasq daemon since isn't the interface on which dnsmasq is bind to. (gdb) p *p.p $4 = { ipi_ifindex = 1, ipi_spec_dst = { s_addr = 34973888 }, ipi_addr = { s_addr = 34973888 } } (gdb) p ifr $8 = {ifr_ifrn = {ifrn_name = "lo", '\000' <repeats 13 times>}, [Fix] Upstream commit: https://github.com/torvalds/linux/commit/f0c16ba8933ed217c2688b277410b2a37ba81591 [Test Case] 1) Configure a dnsmasq instance to server DHCP (Example): $ sudo dnsmasq --no-hosts --no-resolv --strict-order --except-interface=lo --pid-file=/var/lib/neutron/dhcp/860b0cbb-37c3-4bcb-8345-52b942518dca/pid --dhcp-hostsfile=/var/lib/neutron/dhcp/860b0cbb-37c3-4bcb-8345-52b942518dca/host - -addn-hosts=/var/lib/neutron/dhcp/860b0cbb-37c3-4bcb-8345-52b942518dca/addn_hosts --dhcp-optsfile=/var/lib/neutron/dhcp/860b0cbb-37c3-4bcb-8345-52b942518dca/opts --dhcp-leasefile=/var/lib/neutron/dhcp/860b0cbb-37c3-4bcb-8345-52b942 518dca/leases --dhcp-match=set:ipxe,175 --bind-interfaces --interface=ns-1cb1b7c7-c0 --dhcp-range=set:tag0,192.168.21.0,static,86400s --dhcp-option-force=option:mtu,1458 --dhcp-lease-max=256 --conf-file=/etc/neutron/dnsmasq.conf -- domain=openstacklocal 2) Boot a VM or container on the bridge/interface on which dnsmasq is bind to. 2) Use the dhcp_release utility to release the lease. (Example): $ sudo dhcp_release ns-1cb1b7c7-c0 192.168.21.8 fa:16:3e:f3:b2:fe The expected result: The lease is freed. Current results: dnsmasq ignored the DHCP Release message. [Fix] When we send a packet for our own local address on a non-loopback interface (e.g. eth0), due to the change had been introduced from commit 0b922b7 ("net: original ingress device index in PKTINFO"), the original ingress device index would be set as the loopback interface. * https://github.com/torvalds/linux/commit/f0c16ba8933ed217c2688b277410b2a37ba81591 To manage notifications about this bug go to: https://bugs.launchpad.net/kolla/+bug/1683982/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp