26 Jan, 2015
2 commits
-
This patch addresses two types of compiler warnings:
... warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
and
... warning: pointer targets in passing argument N of .kvp_.... differ in signedness [-Wpointer-sign]Signed-off-by: Vitaly Kuznetsov
Signed-off-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
fwrite() does not actually return the number of bytes written and
this value is being ignored anyway and ferror() is being called to
check for an error. As we assign to this variable and never use it
we get the following compile-time warning:
hv_kvp_daemon.c:149:9: warning: variable .bytes_written. set but not used [-Wunused-but-set-variable]
Remove bytes_written completely.Signed-off-by: Vitaly Kuznetsov
Signed-off-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman
12 Jan, 2015
1 commit
-
In the case the host only injects an IPv6 address, the dhcp_enabled flag is
true (it's only for IPv4 according to Hyper-V host team), but we still need to
proceed to parse the IPv6 information.Cc: K. Y. Srinivasan
Signed-off-by: Dexuan Cui
Reviewed-By: Vitaly Kuznetsov
Signed-off-by: Greg Kroah-Hartman
27 Nov, 2014
1 commit
-
Under high memory pressure and very high KVP R/W test pressure, the netlink
recvfrom() may transiently return ENOBUFS to the daemon -- we found this
during a 2-week stress test.We'd better not terminate the daemon on the failure, because a typical KVP
user will re-try the R/W and hopefully it will succeed next time.We can also ignore the errors on sending.
Cc: K. Y. Srinivasan
Signed-off-by: Dexuan Cui
Reviewed-by: Vitaly Kuznetsov
Signed-off-by: Greg Kroah-Hartman
08 Nov, 2014
1 commit
-
All tools/hv daemons do mandatory daemon() on startup. However, no pidfile
is created, this make it difficult for an init system to track such daemons.
Modern linux distros use systemd as their init system. It can handle the
daemonizing by itself, however, it requires a daemon to stay in foreground
for that. Some distros already carry distro-specific patch for hv tools
which switches off daemon().Introduce -n/--no-daemon option for all 3 daemons in hv/tools. Parse options
with getopt() to make this part easily expandable.Signed-off-by: Vitaly Kuznetsov
Signed-off-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman
09 Dec, 2013
1 commit
-
With very old libc headers the inclusion of sys/types.h causes conflicts
with linux/types.h. Since the latter is not required anyway, remove it
from the source files. If any of the headers really needs linux/types.h
it has to include it itself.Signed-off-by: Olaf Hering
Signed-off-by: Greg Kroah-Hartman
27 Sep, 2013
2 commits
-
send_buffer is used only once during registration. To reduce runtime
memory usage reuse the recv_buffer for registration. Also use
NLMSG_LENGTH instead of NLMSG_HDRLEN to take alignment into account.Signed-off-by: Olaf Hering
Signed-off-by: Greg Kroah-Hartman -
kvp_daemon does some operations which take an unpredicable amount of
time. In addition the kernel driver gives the kvp_daemon a 5 second
timeout to respond to message from the host. If an operation such as
getaddrinfo takes a long time and the timeout triggers then netlink
errors occour. As a result of such errors the daemon just terminates and
the service becomes unavailable.Idendifying and fixing these shortcomings in the kernel-userland
communication protocol will be done in separate patches. This change
fixes just one obvious timeout bug.Update kvp_get_domain_name to not return a value, better diagnostic for
the consumer of the hostname string, remove trailing newline in error
case, use snprintf to not overrun output buffer, get hostname only once
and return the cached result.Signed-off-by: Olaf Hering
Signed-off-by: Greg Kroah-Hartman
13 Aug, 2013
2 commits
-
There is no need to have a nlmsghdr pointer to another temporary buffer.
Instead use a full struct nlmsghdr.Signed-off-by: Olaf Hering
Signed-off-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
netlink_send is supposed to send just the cn_msg+hv_kvp_msg via netlink.
Currently it sets an incorrect iovec size, as reported by valgrind.In the case of registering with the kernel the allocated buffer is large
enough to hold nlmsghdr+cn_msg+hv_kvp_msg, no overrun happens. In the
case of responding to the kernel the cn_msg is located in the middle of
recv_buffer, after the nlmsghdr. Currently the code in netlink_send adds
also the size of nlmsghdr to the payload. But nlmsghdr is a separate
iovec. This leads to an (harmless) out-of-bounds access when the kernel
processes the iovec. Correct the iovec size of the cn_msg to be just
cn_msg + its payload.Signed-off-by: Olaf Hering
Signed-off-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman
05 Aug, 2013
2 commits
-
hv_kvp_daemon.c: In function 'main':
hv_kvp_daemon.c:1441:8: warning: ignoring return value of 'daemon', declared with attribute warn_unused_result [-Wunused-result]Signed-off-by: Olaf Hering
Signed-off-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
... to simplify error path in upcoming changes.
Signed-off-by: Olaf Hering
Signed-off-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman
02 Aug, 2013
2 commits
-
hv_kvp_daemon.c: In function 'main':
hv_kvp_daemon.c:1441:8: warning: ignoring return value of 'daemon', declared with attribute warn_unused_result [-Wunused-result]Signed-off-by: Olaf Hering
Signed-off-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
hv_kvp_daemon fails to start in current openSuSE 13.1 snapshots because
the kvp_send_buffer is too small to hold cn_msg+hv_kvp_msg, the very
first sendmsg returns with EFAULT. In addition it fixes the Network info
tab in Windows Server 2012R2 in SLES11.Adjust the code in kvp and vss daemon to allocate the needed buffers at
runtime. To keep the code simple, the buffer_len includes also the
nlmsghdr, although only the recv_buffer needs this extra space.Signed-off-by: Olaf Hering
Signed-off-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman
17 Jul, 2013
1 commit
-
Each subnet string needs to be separated with a semicolon. Fix this bug.
Signed-off-by: K. Y. Srinivasan
Cc: Stable
Signed-off-by: Greg Kroah-Hartman
18 Jun, 2013
1 commit
-
Use errno and strerror() when logging errors to provide
more information.Signed-off-by: Tomas Hozza
Signed-off-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman
04 Jun, 2013
4 commits
-
Close "fd" file descriptor when is goes out of scope so it does
not leak.Signed-off-by: Tomas Hozza
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
Check return value of strchr call and dereference it only if it is
not NULL.Signed-off-by: Tomas Hozza
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
Check return value of poll call and if it fails print error
to the system log. If errno is EINVAL then exit with non-zero
value otherwise continue the while loop and call poll again.Signed-off-by: Tomas Hozza
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
Check return value of setsockopt call and if it fails print error
to the system log and exit with non-zero value.Signed-off-by: Tomas Hozza
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman
16 Mar, 2013
3 commits
-
HyperV KVP daemon should check nlmsg_type in received netlink message
header. If message type is NLMSG_DONE daemon can proceed with processing
otherwise it should wait for next message.Signed-off-by: Tomas Hozza
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
HyperV daemon should use macros for option values when calling setsockopt.
Using specific numeric values instead of macros is confusing.Signed-off-by: Tomas Hozza
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
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
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman
19 Jan, 2013
1 commit
-
Use CLOEXEC flag when opening kvp_pool_x files to prevent file
descriptor leakage. Not using it was causing a problem when
SELinux was enabled.Signed-off-by: Tomas Hozza
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman
18 Jan, 2013
3 commits
-
Fix for the daemon code and for hv_set_ifconfig.sh script, so
that the created ifcfg-* file is consistent with initscripts
documentation.Signed-off-by: Tomas Hozza
Signed-off-by: Greg Kroah-Hartman -
It's silly to create directories without execute permission, or to
give permissions to 'other' but not the group-owner.Write the permissions in octal and 'ls -l' format since these are much
easier to read than the named macros.Signed-off-by: Ben Hutchings
Signed-off-by: Tomas Hozza
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
Initial patch by Ben Hutchings
We will install this in /usr, so it must use /var/lib for its state.
Only programs installed under /opt should use /var/opt.Signed-off-by: Tomas Hozza
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman
16 Nov, 2012
2 commits
-
Initial patch by Ben Hutchings
Standard C strings are arrays of char, not __u8 (unsigned char).
Declare variables and parameters accordingly, and add the necessary
casts.Signed-off-by: Tomas Hozza
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
The source code without this patch caused hypervkvpd to exit when it processed
a spoofed Netlink packet which has been sent from an untrusted local user.
Now Netlink messages with a non-zero nl_pid source address are ignored
and a warning is printed into the syslog.Signed-off-by: Tomas Hozza
Acked-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman
31 Oct, 2012
2 commits
-
Don't return loopback addresses and further don't terminate
the IP address strings with a semicolon. This is the current
behavior of Windows guests.Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Reported-by: Claudio Latini
Signed-off-by: Greg Kroah-Hartman -
Currently, we are returning the same string for both OSBuildNumber
and OSVersion keys. Return the full uts string for the OSBuild
key since Windows does not impose any restrictions on this.Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Reported-by: Claudio Latini
Signed-off-by: Greg Kroah-Hartman
11 Sep, 2012
8 commits
-
There is a new convention, used by systemd and supported by most
distributions, to put basic OS release information in /etc/os-release.
Added some additional error checking on strdup()Signed-off-by: Ben Hutchings
Signed-off-by: K. Y. Srinivasan
Signed-off-by: Greg Kroah-Hartman -
hv_kvp_daemon currently does not check whether fread() or fwrite()
succeed. Add the necessary checks. Also, remove the incorrect use of
feof() before fread().Signed-off-by: Ben Hutchings
Signed-off-by: K. Y. Srinivasan
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman -
Linux native exit codes are 8-bit unsigned values. exit(-1) results
in an exit code of 255, which is usually reserved for shells reporting
'command not found'. Use the portable value EXIT_FAILURE. (Not that
this matters much for a daemon.)Signed-off-by: Ben Hutchings
Signed-off-by: K. Y. Srinivasan
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman -
Match up each fopen() with an fclose().
Signed-off-by: Ben Hutchings
Signed-off-by: K. Y. Srinivasan
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman -
Now implement the KVP verb - KVP_OP_GET_IP_INFO. This operation retrieves IP
information for the specified interface.Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: Greg Kroah-Hartman -
Rename the function kvp_get_ip_address() to better reflect the functionality
being implemented.Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: Greg Kroah-Hartman -
Implement the KVP verb - KVP_OP_SET_IP_INFO. This operation configures the
specified interface based on the given configuration. Since configuring
an interface is very distro specific, we invoke an external (Distro specific)
script to configure the interface.Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: Greg Kroah-Hartman -
Collect information on dhcp setting for the specified interface.
We invoke an external (Distro specific) script to get this information.Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: Greg Kroah-Hartman
05 Sep, 2012
1 commit
-
Now, gather DNS information. Invoke an external script (that can be
distro dependent) to gather the DNS information.Signed-off-by: K. Y. Srinivasan
Reviewed-by: Haiyang Zhang
Signed-off-by: Greg Kroah-Hartman