Skip to content

Commit

Permalink
tools: hv: daemon should subscribe only to CN_KVP_IDX group
Browse files Browse the repository at this point in the history
Previously HyperV daemon set sockaddr_nl.nl_groups to CN_KVP_IDX.
Netlink documentation says: "nl_groups is a bit mask with every bit
representing a netlink group number". Since CN_KVP_IDX value is "9"
HyperV daemon was receiving Netlink messages also from group number
"1" which is used by CGroup Rules Engine Daemon. This caused the
daemon to segfault (at least on 2.6.32 kernel).

HyperV daemon should set nl_groups to zero and specify multicast
group CN_KVP_IDX only by using socket options.

Signed-off-by: Tomas Hozza <thozza@redhat.com>
Acked-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Tomas Hozza authored and Greg Kroah-Hartman committed Mar 15, 2013
1 parent 3334948 commit 77d6a52
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions tools/hv/hv_kvp_daemon.c
Original file line number Diff line number Diff line change
Expand Up @@ -1443,7 +1443,7 @@ int main(void)
addr.nl_family = AF_NETLINK;
addr.nl_pad = 0;
addr.nl_pid = 0;
addr.nl_groups = CN_KVP_IDX;
addr.nl_groups = 0;


error = bind(fd, (struct sockaddr *)&addr, sizeof(addr));
Expand All @@ -1452,7 +1452,7 @@ int main(void)
close(fd);
exit(EXIT_FAILURE);
}
sock_opt = addr.nl_groups;
sock_opt = CN_KVP_IDX;
setsockopt(fd, 270, 1, &sock_opt, sizeof(sock_opt));
/*
* Register ourselves with the kernel.
Expand Down

0 comments on commit 77d6a52

Please sign in to comment.