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

    Vitaly Kuznetsov
     
  • 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

    Vitaly Kuznetsov
     

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

    Dexuan Cui
     

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

    Dexuan Cui
     

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

    Vitaly Kuznetsov
     

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

    Olaf Hering
     

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

    Olaf Hering
     
  • 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

    Olaf Hering
     

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

    Olaf Hering
     
  • 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

    Olaf Hering
     

05 Aug, 2013

2 commits


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

    Olaf Hering
     
  • 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

    Olaf Hering
     

17 Jul, 2013

1 commit


18 Jun, 2013

1 commit


04 Jun, 2013

4 commits


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

    Tomas Hozza
     
  • 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

    Tomas Hozza
     
  • 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

    Tomas Hozza
     

19 Jan, 2013

1 commit


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

    Tomas Hozza
     
  • 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

    Ben Hutchings
     
  • 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

    Tomas Hozza
     

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

    Tomas Hozza
     
  • 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

    Tomas Hozza
     

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

    K. Y. Srinivasan
     
  • 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

    K. Y. Srinivasan
     

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

    Ben Hutchings
     
  • 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

    Ben Hutchings
     
  • 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

    Ben Hutchings
     
  • 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

    Ben Hutchings
     
  • 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

    K. Y. Srinivasan
     
  • 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

    K. Y. Srinivasan
     
  • 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

    K. Y. Srinivasan
     
  • 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

    K. Y. Srinivasan
     

05 Sep, 2012

1 commit