Accepting request 121665 from Virtualization
- check origin of netlink messages, use recvfrom() [bnc#761200] - do not package modprobe.conf rule in main package prevents loading of ata_piix which is required for cdrom access OBS-URL: https://build.opensuse.org/request/show/121665 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/hyper-v?expand=0&rev=3
This commit is contained in:
commit
4ca7dd7a04
@ -1,3 +1,8 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed May 16 20:44:36 CEST 2012 - ohering@suse.de
|
||||
|
||||
- check origin of netlink messages, use recvfrom() [bnc#761200]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed May 2 12:13:03 CEST 2012 - ohering@suse.de
|
||||
|
||||
@ -14,6 +19,12 @@ Mon Mar 26 19:05:48 CEST 2012 - ohering@suse.de
|
||||
- update hv_kvp_daemon to 3.4-rc1 state
|
||||
use a copy linux/hyperv.h to compile the daemon
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 8 17:46:21 CET 2011 - ohering@suse.de
|
||||
|
||||
- do not package modprobe.conf rule in main package
|
||||
prevents loading of ata_piix which is required for cdrom access
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Nov 18 21:49:57 CET 2011 - ohering@suse.de
|
||||
|
||||
|
11
hyper-v.spec
11
hyper-v.spec
@ -17,6 +17,7 @@
|
||||
|
||||
|
||||
%define with_kmp 0
|
||||
%define with_modprobe 0
|
||||
%if %{with_kmp}
|
||||
%define with_drivers_in_kmp 0
|
||||
%endif
|
||||
@ -49,6 +50,7 @@ Source5: hyper-v.kvptest.ps1.txt
|
||||
Source9: hyper-v.include.linux.hyperv.h
|
||||
Source10: hyper-v.tools.hv.hv_kvp_daemon.c
|
||||
Source11: hyper-v.init.sh
|
||||
Patch761200: hyper-v.tools.hv.hv_kvp_daemon.c.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
%if %{with_kmp}
|
||||
%if %{with_drivers_in_kmp}
|
||||
@ -82,11 +84,14 @@ This package contains the Microsoft Hyper-V drivers.
|
||||
cp -avL %{S:5} kvptest.ps1.txt
|
||||
cp -vL %{S:9} %{hv_kvp_daemon}.h
|
||||
cp -vL %{S:10} %{hv_kvp_daemon}.c
|
||||
sed -i~ '/#include <linux.hyperv.h>/d' %{hv_kvp_daemon}.c
|
||||
%patch761200 -p0
|
||||
|
||||
%build
|
||||
sed -i~ '/#include <linux.hyperv.h>/d' %{hv_kvp_daemon}.c
|
||||
gcc \
|
||||
$RPM_OPT_FLAGS \
|
||||
-Wno-unused-variable \
|
||||
-Wno-pointer-sign \
|
||||
-g \
|
||||
%{hv_kvp_daemon}.c \
|
||||
-include %{hv_kvp_daemon}.h \
|
||||
@ -123,16 +128,20 @@ install -m755 %{hv_kvp_daemon} $RPM_BUILD_ROOT/usr/sbin
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/init.d
|
||||
install -m755 %{S:11} $RPM_BUILD_ROOT/etc/init.d/%{hv_kvp_daemon}
|
||||
ln -sfvbn ../../etc/init.d/%{hv_kvp_daemon} $RPM_BUILD_ROOT/usr/sbin/rc%{hv_kvp_daemon}
|
||||
%if %{with_modprobe}
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/modprobe.d
|
||||
install -m644 %SOURCE1 $RPM_BUILD_ROOT/etc/modprobe.d/hyperv_pvdrivers.conf
|
||||
%endif
|
||||
|
||||
%files
|
||||
%defattr (-,root,root)
|
||||
%doc kvptest.ps1.txt
|
||||
%if %{with_modprobe}
|
||||
%if !%{with_kmp}
|
||||
%dir /etc/modprobe.d
|
||||
%config /etc/modprobe.d/hyperv_pvdrivers.conf
|
||||
%endif
|
||||
%endif
|
||||
/etc/init.d/%{hv_kvp_daemon}
|
||||
/usr/sbin/rc%{hv_kvp_daemon}
|
||||
/usr/sbin/%{hv_kvp_daemon}
|
||||
|
22
hyper-v.tools.hv.hv_kvp_daemon.c.patch
Normal file
22
hyper-v.tools.hv.hv_kvp_daemon.c.patch
Normal file
@ -0,0 +1,22 @@
|
||||
--- hv_kvp_daemon.c.orig 2012-05-16 20:11:10.000000000 +0200
|
||||
+++ hv_kvp_daemon.c 2012-05-16 20:40:08.000000000 +0200
|
||||
@@ -701,14 +701,16 @@ int main(void)
|
||||
pfd.fd = fd;
|
||||
|
||||
while (1) {
|
||||
+ struct sockaddr *addr_p = (struct sockaddr *) &addr;
|
||||
+ socklen_t addr_l = sizeof(addr);
|
||||
pfd.events = POLLIN;
|
||||
pfd.revents = 0;
|
||||
poll(&pfd, 1, -1);
|
||||
|
||||
- len = recv(fd, kvp_recv_buffer, sizeof(kvp_recv_buffer), 0);
|
||||
+ len = recvfrom(fd, kvp_recv_buffer, sizeof(kvp_recv_buffer), 0, addr_p, &addr_l);
|
||||
|
||||
- if (len < 0) {
|
||||
- syslog(LOG_ERR, "recv failed; error:%d", len);
|
||||
+ if (len < 0 || addr.nl_pid) {
|
||||
+ syslog(LOG_ERR, "recvfrom failed; pid:%u error:%d %s", addr.nl_pid, errno, strerror(errno));
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
Loading…
Reference in New Issue
Block a user