Subject: Re: [PATCH v3 2/3] genetlink: disallow subscribing to unknown mcast groups

From: Bjørn Mork <[email-masked]>
Date: Wed, 04 Feb 2015 17:15:47 +0100

Bjørn Mork <[email-masked]> writes:

> So I am pretty sure Pablo's patch fixes the problem.

Confirmed now.

Running acpid on v3.19-rc7 + commit 8b7c36d810c6 ("netlink: fix
wrong subscription bitmask to group mapping in") works fine:

nemi:/tmp# strace -s 128 -e trace=socket,bind,sendmsg,recvmsg -f acpid -l -d
socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3
Deprecated /proc/acpi/event was not found.  Trying netlink and the input layer...
input layer /dev/input/event0 (AT Translated Set 2 keyboard) opened successfully, fd 4
input layer /dev/input/event1 (Lid Switch) opened successfully, fd 5
input layer /dev/input/event10 (HDA Intel Headphone) opened successfully, fd 6
input layer /dev/input/event2 (Sleep Button) opened successfully, fd 7
input layer /dev/input/event3 (Power Button) opened successfully, fd 8
input layer /dev/input/event4 (Video Bus) opened successfully, fd 9
input layer /dev/input/event5 (ThinkPad Extra Buttons) opened successfully, fd 10
input layer /dev/input/event7 (HDA Intel Mic) opened successfully, fd 11
input layer /dev/input/event8 (HDA Intel Dock Mic) opened successfully, fd 12
input layer /dev/input/event9 (HDA Intel Dock Headphone) opened successfully, fd 13
inotify fd: 14
inotify wd: 1
socket(PF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_GENERIC) = 15
bind(15, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
sendmsg(15, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"$\0\0\0\20\0\5\0oD\322T\0\0\0\0\3\0\0\0\17\0\2\0acpi_event\0\0", 36}], msg_controllen=0, msg_flags=0}, 0) = 36
recvmsg(15, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"h\0\0\0\20\0\0\0oD\322T@\20\0\0\1\2\0\0\17\0\2\0acpi_event\0\0\6\0\1\0\23\0\0\0\10\0\3\0\1\0\0\0\10\0\4\0\0\0\0\0\10\0\5\0\1\0\0\0$\0\7\0 \0\1\0\10\0\2\0\2\0\0\0\22\0\1\0acpi_mc_group\0\0\0", 16384}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 104
socket(PF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_GENERIC) = 15
bind(15, {sa_family=AF_NETLINK, pid=0, groups=00000002}, 12) = 0
netlink opened successfully
socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 16
bind(16, {sa_family=AF_LOCAL, sun_path="/var/run/acpid.socket"}, 110) = 0
acpid: starting up with netlink and the input layer
parsing conf file /etc/acpi/events/powerbtn-acpi-support
acpid: skipping non-file /etc/acpi/events/CVS
parsing conf file /etc/acpi/events/any
parsing conf file /etc/acpi/events/generic-hibernatebtn
parsing conf file /etc/acpi/events/low_battery
parsing conf file /etc/acpi/events/lidbtn
parsing conf file /etc/acpi/events/sleepbtn
acpid: 6 rules loaded
acpid: waiting for events: event logging is on

And the acpi events are of course received as expected.  Thanks again
for making the kernel more robust.

Bjørn