mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-18 10:27:00 +02:00
Merge pull request #475 from mischief/qemu
bump(app-emulation/qemu): sync with upstream
This commit is contained in:
commit
125dfaea9c
@ -638,3 +638,155 @@
|
|||||||
qemu-9999.ebuild:
|
qemu-9999.ebuild:
|
||||||
depend on jpeg SLOT=0 for building
|
depend on jpeg SLOT=0 for building
|
||||||
|
|
||||||
|
07 Jun 2016; Mike Frysinger <vapier@gentoo.org>
|
||||||
|
+files/qemu-2.6.0-crypto-static.patch, qemu-2.6.0.ebuild, qemu-9999.ebuild:
|
||||||
|
fix static linking errors w/curl[ssl,curl_ssl_openssl]
|
||||||
|
|
||||||
|
21 Jun 2016; Mike Frysinger <vapier@gentoo.org> qemu-9999.ebuild:
|
||||||
|
drop kvm_stat to match upstream #586158
|
||||||
|
|
||||||
|
29 Jun 2016; Alexey Shvetsov <alexxy@gentoo.org> qemu-2.5.0-r2.ebuild,
|
||||||
|
qemu-2.5.0-r3.ebuild, qemu-2.5.1.ebuild, qemu-2.6.0.ebuild,
|
||||||
|
qemu-9999.ebuild:
|
||||||
|
adapt sys-infiniband to sys-fabric rename
|
||||||
|
|
||||||
|
Package-Manager: portage-2.3.0_rc1
|
||||||
|
|
||||||
|
01 Aug 2016; Mike Frysinger <vapier@gentoo.org> qemu-2.5.1.ebuild,
|
||||||
|
qemu-2.6.0.ebuild, qemu-9999.ebuild:
|
||||||
|
handle bzip2 dep #589968
|
||||||
|
|
||||||
|
The block layer uses it to support bzip2 compression in dmg images.
|
||||||
|
That code makes it into softmmu binaries and userland utils.
|
||||||
|
|
||||||
|
07 Aug 2016; Luca Barbato <lu_zero@gentoo.org>
|
||||||
|
+files/qemu-2.6.0-glib-size_t.patch, qemu-2.6.0.ebuild:
|
||||||
|
Drop a -Werror when it could cause a false positive
|
||||||
|
|
||||||
|
The check code could trigger recent compiler warnings.
|
||||||
|
|
||||||
|
Package-Manager: portage-2.2.26
|
||||||
|
|
||||||
|
15 Aug 2016; Luca Barbato <lu_zero@gentoo.org> files/qemu-binfmt.initd-r1:
|
||||||
|
Update ppc magic mask
|
||||||
|
|
||||||
|
Unbreak using qemu-user with current stage3.
|
||||||
|
|
||||||
|
Package-Manager: portage-2.3.0
|
||||||
|
|
||||||
|
21 Aug 2016; Luca Barbato <lu_zero@gentoo.org> qemu-9999.ebuild:
|
||||||
|
Update the languages list
|
||||||
|
|
||||||
|
Package-Manager: portage-2.3.0
|
||||||
|
|
||||||
|
21 Aug 2016; Luca Barbato <lu_zero@gentoo.org> qemu-9999.ebuild:
|
||||||
|
Drop a patch
|
||||||
|
|
||||||
|
It is already upstreamed.
|
||||||
|
|
||||||
|
Package-Manager: portage-2.3.0
|
||||||
|
|
||||||
|
05 Sep 2016; Matthias Maier <tamiko@gentoo.org> -qemu-2.5.0-r2.ebuild,
|
||||||
|
-qemu-2.5.0-r3.ebuild:
|
||||||
|
remove vulnerable 2.5.0
|
||||||
|
|
||||||
|
Package-Manager: portage-2.2.28
|
||||||
|
|
||||||
|
*qemu-2.7.0 (05 Sep 2016)
|
||||||
|
|
||||||
|
05 Sep 2016; Matthias Maier <tamiko@gentoo.org> +qemu-2.7.0.ebuild:
|
||||||
|
version bump to 2.7.0, various security fixes
|
||||||
|
|
||||||
|
3af9187fc6caaf415ab9c0c6d92c9678f65cb17f -> CVE-2016-4001, bug #579734
|
||||||
|
3a15cc0e1ee7168db0782133d2607a6bfa422d66 -> CVE-2016-4002, bug #579734
|
||||||
|
c98c6c105f66f05aa0b7c1d2a4a3f716450907ef -> CVE-2016-4439, bug #583496
|
||||||
|
6c1fef6b59563cc415f21e03f81539ed4b33ad90 -> CVE-2016-4441, bug #583496
|
||||||
|
06630554ccbdd25780aa03c3548aaff1eb56dffd -> , bug #583952
|
||||||
|
844864fbae66935951529408831c2f22367a57b6 -> CVE-2016-5337, bug #584094
|
||||||
|
b60bdd1f1ee1616b7a9aeeffb4088e1ce2710fb2 -> , bug #584102
|
||||||
|
1b85898025c4cd95dce673d15e67e60e98e91731 -> , bug #584146
|
||||||
|
521360267876d3b6518b328051a2e56bca55bef8 -> CVE-2016-4453, bug #584514
|
||||||
|
4e68a0ee17dad7b8d870df0081d4ab2e079016c2 -> CVE-2016-4454, bug #584514
|
||||||
|
a6b3167fa0e825aebb5a7cd8b437b6d41584a196 -> CVE-2016-5126, bug #584630
|
||||||
|
ff589551c8e8e9e95e211b9d8daafb4ed39f1aec -> CVE-2016-5338, bug #584918
|
||||||
|
d3cdc49138c30be1d3c2f83d18f85d9fdee95f1a -> CVE-2016-5238, bug #584918
|
||||||
|
1e7aed70144b4673fc26e73062064b6724795e5f -> , bug #589924
|
||||||
|
afd9096eb1882f23929f5b5c177898ed231bac66 -> CVE-2016-5403, bug #589928
|
||||||
|
eb700029c7836798046191d62d595363d92c84d4 -> CVE-2016-6835, bug #591244
|
||||||
|
ead315e43ea0c2ca3491209c6c8db8ce3f2bbe05 -> CVE-2016-6834, bug #591374
|
||||||
|
6c352ca9b4ee3e1e286ea9e8434bd8e69ac7d0d8 -> CVE-2016-6833, bug #591380
|
||||||
|
47882fa4975bf0b58dd74474329fdd7154e8f04c -> CVE-2016-6888, bug #591678
|
||||||
|
|
||||||
|
805b5d98c649d26fc44d2d7755a97f18e62b438a
|
||||||
|
56f101ecce0eafd09e2daf1c4eeb1377d6959261
|
||||||
|
fff39a7ad09da07ef490de05c92c91f22f8002f2 -> , bug #592430
|
||||||
|
|
||||||
|
Package-Manager: portage-2.2.28
|
||||||
|
|
||||||
|
05 Sep 2016; Matthias Maier <tamiko@gentoo.org>
|
||||||
|
+files/qemu-2.7.0-CVE-2016-6836.patch, qemu-2.7.0.ebuild:
|
||||||
|
apply patch for CVE-2016-6836, bug #591242
|
||||||
|
|
||||||
|
Package-Manager: portage-2.2.28
|
||||||
|
|
||||||
|
05 Sep 2016; Matthias Maier <tamiko@gentoo.org> -qemu-2.6.0.ebuild,
|
||||||
|
qemu-2.7.0.ebuild:
|
||||||
|
drop vulnerable 2.6.0
|
||||||
|
|
||||||
|
Package-Manager: portage-2.2.28
|
||||||
|
|
||||||
|
05 Sep 2016; Matthias Maier <tamiko@gentoo.org>
|
||||||
|
-files/qemu-2.5.0-9pfs-segfault.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2015-8567.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2015-8613.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2015-8619.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2015-8701.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2015-8743.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2016-1568.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2016-1714.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2016-1922.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2016-1981.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2016-2197.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2016-2392.patch,
|
||||||
|
-files/qemu-2.5.0-ne2000-reg-check.patch,
|
||||||
|
-files/qemu-2.5.0-usb-ehci-oob.patch,
|
||||||
|
-files/qemu-2.5.0-usb-ndis-int-overflow.patch,
|
||||||
|
-files/qemu-2.6.0-crypto-static.patch, -files/qemu-2.6.0-glib-size_t.patch:
|
||||||
|
drop obsolete patches
|
||||||
|
|
||||||
|
Package-Manager: portage-2.2.28
|
||||||
|
|
||||||
|
05 Sep 2016; Matthias Maier <tamiko@gentoo.org> qemu-2.7.0.ebuild:
|
||||||
|
fix installation with USE=python, bug #592908
|
||||||
|
|
||||||
|
Package-Manager: portage-2.2.28
|
||||||
|
|
||||||
|
05 Sep 2016; Agostino Sarubbo <ago@gentoo.org> qemu-2.7.0.ebuild:
|
||||||
|
amd64 stable wrt bug #592430
|
||||||
|
|
||||||
|
Package-Manager: portage-2.2.28
|
||||||
|
RepoMan-Options: --include-arches="amd64"
|
||||||
|
Signed-off-by: Agostino Sarubbo <ago@gentoo.org>
|
||||||
|
|
||||||
|
05 Sep 2016; Agostino Sarubbo <ago@gentoo.org> qemu-2.7.0.ebuild:
|
||||||
|
x86 stable wrt bug #592430
|
||||||
|
|
||||||
|
Package-Manager: portage-2.2.28
|
||||||
|
RepoMan-Options: --include-arches="x86"
|
||||||
|
Signed-off-by: Agostino Sarubbo <ago@gentoo.org>
|
||||||
|
|
||||||
|
05 Sep 2016; Matthias Maier <tamiko@gentoo.org>
|
||||||
|
-files/qemu-2.5.0-CVE-2015-8558.patch,
|
||||||
|
-files/qemu-2.5.0-CVE-2016-2198.patch,
|
||||||
|
-files/qemu-2.5.0-rng-stack-corrupt-0.patch,
|
||||||
|
-files/qemu-2.5.0-rng-stack-corrupt-1.patch,
|
||||||
|
-files/qemu-2.5.0-rng-stack-corrupt-2.patch,
|
||||||
|
-files/qemu-2.5.0-rng-stack-corrupt-3.patch,
|
||||||
|
-files/qemu-2.5.1-CVE-2015-8558.patch,
|
||||||
|
-files/qemu-2.5.1-CVE-2016-4020.patch,
|
||||||
|
-files/qemu-2.5.1-stellaris_enet-overflow.patch,
|
||||||
|
-files/qemu-2.5.1-xfs-linux-headers.patch, -qemu-2.5.1.ebuild:
|
||||||
|
drop vulnerable 2.5.1, bug #592430, and 19 others
|
||||||
|
|
||||||
|
Package-Manager: portage-2.2.28
|
||||||
|
|
||||||
|
@ -1,42 +1,12 @@
|
|||||||
AUX 65-kvm.rules 40 SHA256 c16a8dc7855880b2651f1a3ff488ecc54d4ac1036c71fffd5007021d8d18a7c5 SHA512 98aad2a2f212a7ac0ee5b60a9c92744fa462bce5f26594845c7a31d692aaaca2d52cb57bdbede7dfc60b9862c2a6510665dbb03215d5cf76e62516a283decdd6 WHIRLPOOL 937de93a23930f6b8533f0c3e0dd249c99ddf7d54446dea857607266ac0a4b435c5b4a52b2986b138bace9c0a7ade66f94116b38e2bc4767ead54bd11baf0920
|
AUX 65-kvm.rules 40 SHA256 c16a8dc7855880b2651f1a3ff488ecc54d4ac1036c71fffd5007021d8d18a7c5 SHA512 98aad2a2f212a7ac0ee5b60a9c92744fa462bce5f26594845c7a31d692aaaca2d52cb57bdbede7dfc60b9862c2a6510665dbb03215d5cf76e62516a283decdd6 WHIRLPOOL 937de93a23930f6b8533f0c3e0dd249c99ddf7d54446dea857607266ac0a4b435c5b4a52b2986b138bace9c0a7ade66f94116b38e2bc4767ead54bd11baf0920
|
||||||
AUX bridge.conf 454 SHA256 a51850dd39923f3482e4c575b48ad9fef9c9ebb2f2176225da399b79ce48c69d SHA512 a907ee86b81a1b61033bb7621ded65112504131ef7b698c53e4014b958ee6fc79e66f63069015a01e41362cb70a7d0ed26dd9a03033cf776f4846f0e1f8f1533 WHIRLPOOL 8fcbd4abf9b8f7ca3d16fe0eaf17196ebf708dfecf85ce0f020e0de22b64905114f7b310f361826c81bb961c6b1bbbf984bff1e595bb949993b8966ccb222c35
|
AUX bridge.conf 454 SHA256 a51850dd39923f3482e4c575b48ad9fef9c9ebb2f2176225da399b79ce48c69d SHA512 a907ee86b81a1b61033bb7621ded65112504131ef7b698c53e4014b958ee6fc79e66f63069015a01e41362cb70a7d0ed26dd9a03033cf776f4846f0e1f8f1533 WHIRLPOOL 8fcbd4abf9b8f7ca3d16fe0eaf17196ebf708dfecf85ce0f020e0de22b64905114f7b310f361826c81bb961c6b1bbbf984bff1e595bb949993b8966ccb222c35
|
||||||
AUX qemu-2.5.0-9pfs-segfault.patch 1294 SHA256 707835ed8af1aa7e8fc9f0e06c6afa8e77fe7858b20ad4c2df2a1aec0627332d SHA512 2af7498939ba653c36808a7bccafe4a3d8c3d1cfa7199c5788f67fb001925dff17e4faba5e13c6b1517ca887209452f4ba7ed71f6b4464d55b5e942350406f90 WHIRLPOOL 591ba85bd9e5ab0665ed5835878886ec0d774a500ed966dd1b37e5478a4799a38d319a6bb88d214f202a83282db6a0434641b30c8b70ceef6bd2fb1e38f8faef
|
|
||||||
AUX qemu-2.5.0-CVE-2015-8558.patch 1459 SHA256 d769e6eb6dc0bdb0b982ef5fe7d73cc6bad47233102f53d11c6ed6c9051602d8 SHA512 42961191890c500675610d5d33e6ff468b07428c6b428ac01bb5c0e3ea88ff611a3532f848d54317458475fef221a06e41761ef14ea61d1b741db73450c4f90d WHIRLPOOL 475679dc1a24bc75012995a9a2122847454701b65ff0b7f8192865b45de49ce08572f129a7cfdeb36521252ed2f80c95e9dddbd64cb8e39fdc5beacc25934798
|
|
||||||
AUX qemu-2.5.0-CVE-2015-8567.patch 3108 SHA256 88b72df4e02407c3b9ca4835c38988b97fcd5aa9c68da6fa47207fe675d4e661 SHA512 2f0243ec9764d72fe5e7a005a8db40d3d5c4c2edae5c3451087ee3f5c841c96a3112875cf88a19061fa2ce0d04715d247e6eb1eb83e1e5b57ec0b9eb324b8ce6 WHIRLPOOL b432ff3e105da5c0bd20dd1d7da0374f4005b2ac5a9a8c824e96730aeafa89bb8fc125f8b2857fdaf72024082ddbc0c7a28c3e3ffb9114c3d370db1b638c4731
|
|
||||||
AUX qemu-2.5.0-CVE-2015-8613.patch 1264 SHA256 c8df9bb4c0100ef6c8ae09acd73878e46b3ad4a9e04b9cfe30445922bc33299c SHA512 ea2bf909ec29bab0b2131bf9d3e8fc04f176393258c4ce578d3ac8d76f09a25b96f8a3b2aa450b47c0ba9bc9637e5b93e7cc53542362b48930de18ceebb07698 WHIRLPOOL f0d415b1df9f05cb0431801054535f8939d46e7dda6eaa5ce990eef82ddc458003eb9ae5dc06e3269ddb5ed8f8c903c1f3d058d41e63ea9a5192b6149283feb2
|
|
||||||
AUX qemu-2.5.0-CVE-2015-8619.patch 4220 SHA256 325bb3df340a1f5115a345a145bed94e9b2d5721cf8cce1217138e8d5a8a0c1a SHA512 317e882da18332fe667c10c55b8f026d347d93c61f668e8ddb916f1b0f5e39a9e3104c14ab2306ce761024a02a78af3a4808627ad9f18c0d43d748fd30c21505 WHIRLPOOL feddd255cf3844cd270ca2662f6140cc7104f8328e51acb01dc2f6f1b4646061569f5faa629264ebeaa5a2b18e595c4a90b69a588aa05f1acf70d9570067c6c0
|
|
||||||
AUX qemu-2.5.0-CVE-2015-8701.patch 1671 SHA256 f39e0c6301cffa1b14c3ef0ab72fce0e2acd42170759ef7954234d31602aeb99 SHA512 d39edf84e2d17e6080bbc4a270732cd73b41fa39d948ee7bc4456e1024c5a69ddfb5e848af3272615f5aa36a3b6410a12f5a73e00ccfa58e0d60d7289d034aa9 WHIRLPOOL 352148c367837ba2d6eb5eb39e00c128f0cff3faef159754a41318857bc11a6616be184c24df4767ec2c8c14910ad74fc3be48273f6312b1687910fbcaf7bec3
|
|
||||||
AUX qemu-2.5.0-CVE-2015-8743.patch 1777 SHA256 22aac571c1aa6f6a283d200a7703fdfea0a5bcaf227a003a2cbf5741bbb8df85 SHA512 65d8632fd43959983ca02f9ab116ec78ea043e6d867e6d743014885c2a423bb3b87c2e56caa37e7f29e971a44f5ea695cb4ce1c3a9c1fc2d734b25ca0b2f4054 WHIRLPOOL 9128c812cfbfe3d4629cd6c7c2c6f50c9ef2fe2d5b62b24486559279296987f593f852f913eb67fbe956d650d50612fa7a658a60b3d80cf4fa9256e332d77330
|
|
||||||
AUX qemu-2.5.0-CVE-2016-1568.patch 1476 SHA256 ba2a25142977eea531159d81ef8938e8519c92800aa1958e71da9e2780c8256a SHA512 643ef742e6cd1dbc8f420b38f684bc8639e4bd58ab38c254654d4b1a72b129202fecdddddfd308b48ed7813da193edff68d737080d5035c82daf9676ee17df22 WHIRLPOOL af9376400540f20d77ea06cb6a12ce415b72bb22cdde3365bba8b02deb8985aedfee303646e13e1d1263a2dcd17bf1518637183a81c66c2db7b438aa88ef7d95
|
|
||||||
AUX qemu-2.5.0-CVE-2016-1714.patch 2168 SHA256 2a366b01f5c05a87324ca765cea90bc93eda819d264932ac4588e6303e0b7dee SHA512 25f5f67dbcb2175bac1b5d6d11bf6b27019526c0ee43ed8580a0de10bf82ac62e5a71ded4d18c0e561d8d3832da630c92f9f118277da349367f55b4939029216 WHIRLPOOL 600d0c90779aaf7c1840e106359c909d486c7cce483edc0e5ddc627a127c907f5dd9cbd5b8ce561e2675f6bfe8cd0502efa96557601ce26eda2311b1072ab48b
|
|
||||||
AUX qemu-2.5.0-CVE-2016-1922.patch 2114 SHA256 a10d23d5ff3d021aa0962c79a397b69518cec6cd570ebea771f03513d4b7eb1a SHA512 af895fd14e876f808203279176c5f5c28d95d0137385c6d0e56e27f9ad70b76552b8ce75a3be368ceed94fbc62999e8d6c5e6dbcd35e99d59c57787afe6ac57d WHIRLPOOL 199ec0c9bc766968778e5733e1ca0773999a3cccfa779d8fdf68c2ed866a1427048b0db9730eb2a1521be5e174ea6388b69053c85d0d25144e73df25ec7829a9
|
|
||||||
AUX qemu-2.5.0-CVE-2016-1981.patch 4160 SHA256 ad440f4964670e68846a3469e0cb0eca3ecf11cfc5c2e32b09581b64eef43ab7 SHA512 f133a311da42cc831116251550359949e0f23f1163a7b0e638fc5f43edf1dea17a5e5843a06142c3086ef367d94898b074eebf8c371ea83b7a3981cfd20c4e27 WHIRLPOOL ba6e563917773d4488f51c11864a6ce1a4331ba6fc7925f47768282ea75f1a26c51792063c946579d49b28e3ed7a854a191732c1ba7ec40628395e971cf67782
|
|
||||||
AUX qemu-2.5.0-CVE-2016-2197.patch 1358 SHA256 caa5eb42b21a3fc656982fdc4e511c8350eeb0511857d9b8f371e4e926c2ac80 SHA512 ee6467ef00c5db1e6c5f6331ec411afd139e7e8c5d5e23e3ee33b3161f0e79028ddecfa661bf4bfb5bac0cfa91385f69d66b57c5337384817f0756b7575aa099 WHIRLPOOL 67bab11771159560fd080d157477aa227aa351bb8101671c0e778a38a15d607a2346ade7b10310914f93d5a1faeb993003590e7bf75cd5c9d06db0c687085b51
|
|
||||||
AUX qemu-2.5.0-CVE-2016-2198.patch 1540 SHA256 0d6d81a27ffac1af7c478a050aa690eb007cf9735a1a0c4b398eabeb990d5ab4 SHA512 b0b3131bb2b9b2d3f2a3f3286eeb92b527f0d3366e657cf8bcbabc6426b57893936c5a8ef66697ad1014b4525c09fa4d067195600f96ab2b005fd52b6e77d9a4 WHIRLPOOL f5c56b87f934c573fc71169fcded579b9917285fbfff59fd9288011775f482ead2ac09e1399f325e826305fab2f7bc2cd21d333711c526c1658a069a5ee93491
|
|
||||||
AUX qemu-2.5.0-CVE-2016-2392.patch 1265 SHA256 a81d906bcf18fb5cf76fa5fa686c848a33f43054bff03a7a2e0e391a34884be8 SHA512 cac6503176f1e37fa6e9bab1daa4bbec6fb6fb3be4ec2e30427356969f3310b8bb898356f9e7f786e75c3ba07b9bc7afb9f0ac7a99adc12847de49b55c0d7960 WHIRLPOOL 65456ade1b773ebfe629ab0fb0045613b4d2f0f5c2d9ec20409170cba5011de46800bf1dd42a78334fe5166a2c8201e6505f3db904474cd4c28d1e88df0f9daf
|
|
||||||
AUX qemu-2.5.0-cflags.patch 410 SHA256 17f5624dd733f5c80e733cc67ae36a736169ec066024dbf802b416accfed0755 SHA512 0194d28de08b4e51c5bd1c9a2cc7965ba7f66dfddb8fd91de3da93677e6cf2d38ad3270f69aaea8a20cf2533c2980018d6e0fed711be2806fe2053fba7c081f3 WHIRLPOOL 5f5b95d00409fbe03adb64801d30a2fb5f98dded5efa7f0e78b5746776f72917dcbea767e1d0afcb304d8bf8c484adedb8037e6d54e9d34997c2bc3a98b53154
|
AUX qemu-2.5.0-cflags.patch 410 SHA256 17f5624dd733f5c80e733cc67ae36a736169ec066024dbf802b416accfed0755 SHA512 0194d28de08b4e51c5bd1c9a2cc7965ba7f66dfddb8fd91de3da93677e6cf2d38ad3270f69aaea8a20cf2533c2980018d6e0fed711be2806fe2053fba7c081f3 WHIRLPOOL 5f5b95d00409fbe03adb64801d30a2fb5f98dded5efa7f0e78b5746776f72917dcbea767e1d0afcb304d8bf8c484adedb8037e6d54e9d34997c2bc3a98b53154
|
||||||
AUX qemu-2.5.0-ne2000-reg-check.patch 1141 SHA256 b64fd5bfbd9c7b37b9003271e9902db4ea28b71095a51e161c7698e2f690183b SHA512 7f94ef8cb023224750abc5c2c7d515ccc6ce7f8b655a1454673ecc291193551b9ae00c248c609368a0cf143888ba2c3a5a929a4f9477e5efd27f92c45abc8722 WHIRLPOOL 43fec025a08e0aa0c14ab5ac11cd9aa49b03e52e3fcaacb6785ecd25aa531edfd04a5f8913330e27acf046f8cad2c57887e1a353779ee73ab8bb2dad65c446a7
|
|
||||||
AUX qemu-2.5.0-rng-stack-corrupt-0.patch 3125 SHA256 164b155db78a9291b9f8dea71a16b5779e1a9d382a8cb0f5ff380d1f2d811cef SHA512 7da544873dbefbbc7a2ed69bd7cca0053bfe71ef7f5c2faf12cb5dc6e07b8d9104e5bcf329b3355e886edc5805509623234c9fe8fb536544d6285b04ccc59919 WHIRLPOOL f076264ce4bae5be2f34e006e3e4dcc20042313cb6da4977b61529c3100e835952807738d53a86967f98abad68eba1c8dcbb6a04af162b048399e059b5eb9d6b
|
|
||||||
AUX qemu-2.5.0-rng-stack-corrupt-1.patch 4110 SHA256 16966eb20072a5d16fec46e5959e32708342af9a7266fe4a90a0abaf68af3529 SHA512 530d6a5f9b6795013bbe197cf0a0d7eddfb06d18c0f8410bcf5bcc2d32c4b72c325b8b0ade2c517bd305fcbdab03124cc527d24d73ce767daf51de65d00920c8 WHIRLPOOL c0b653c67993c6c6ed282f0c86099c8c80a241f10e23ef3fd8e33c6d86fbb5553049550e83954cfc6d3576735c4ce28099f813917966c0a05c84bb46a6bee413
|
|
||||||
AUX qemu-2.5.0-rng-stack-corrupt-2.patch 4601 SHA256 c2b4e1ee8ee4bb2f4d42012a847c1da83a9e2349238d37bba1a3b9c440957f7f SHA512 ba299d07c7382f39f177f8094594daf131727d3d28633b426064f7cc6bf75d19b1ae78db248fc70ddbdb43fd2a6b0c5ed7793e6f42aba2763cdb4c12d6816c54 WHIRLPOOL 62b6ab75c32574a4c53193d82c7f51efdaa4789154c2d2f9acee7ede240d2920d92e31dfead7edc17aa12f938919143ce049d2c9ef9733baccc27d382506437f
|
|
||||||
AUX qemu-2.5.0-rng-stack-corrupt-3.patch 5519 SHA256 5a3c2ed59bc30f395aee5cd0b77cdb06d868386e5bbe1b392169f8d96ae9474a SHA512 f62713130d3b989b274476a4cc2eafb95dc41de4723fe475e454132817a159eb729bbbe5a29aee755715100095670107c5762271184252e9d0cd43c4b25bc5d1 WHIRLPOOL f8e4aa90b90b03dd6e4dd68734cb16ee5f59a9585697ef3c48e7e861968798cb3c66018ad5a788f99b99e9fddab2ae83d977ec4b1a8599596a5ce03286726e3e
|
|
||||||
AUX qemu-2.5.0-sysmacros.patch 333 SHA256 a5716fc02da383d455f5cbd76f49e4ee74d84c2d5703319adcbeb145d04875f9 SHA512 329632c5bff846ca3ffcdb4bc94ae62f17c6bdbb566f9bec0784357c943523e8ca7773790b83a9617734cab3b003baa3d636cbd08f7385810a63b0fa0383c4f0 WHIRLPOOL 2a774767d4685545d3ed18e4f5dece99a9007597d73c56197652ff24083550f987ffb69e5c624760dece87def71a7c5c22a694bf999d7309e48ef622f18f0d73
|
AUX qemu-2.5.0-sysmacros.patch 333 SHA256 a5716fc02da383d455f5cbd76f49e4ee74d84c2d5703319adcbeb145d04875f9 SHA512 329632c5bff846ca3ffcdb4bc94ae62f17c6bdbb566f9bec0784357c943523e8ca7773790b83a9617734cab3b003baa3d636cbd08f7385810a63b0fa0383c4f0 WHIRLPOOL 2a774767d4685545d3ed18e4f5dece99a9007597d73c56197652ff24083550f987ffb69e5c624760dece87def71a7c5c22a694bf999d7309e48ef622f18f0d73
|
||||||
AUX qemu-2.5.0-usb-ehci-oob.patch 2014 SHA256 e0593f8a645dfca3115ea56d1b74d701f07c60d80eadf0bf68133e7539de345a SHA512 c02e0881bb85ffbf7d401b4ee5801692262cddaef9245dfcbf323f0f4d310394e1fbbf639f7a3d2d39ae428c09513adcb9be7fdcf49b7accf133d911dc0b702c WHIRLPOOL 992b2c6d3464a53174054f0d2dc6ec70eeb1e17128ee65c7986d9f5ec80e037bca9bd5bfb65c66bb9bf85f0b56a1a6d008ab4dbe35602d7deea9489add2e7c4b
|
AUX qemu-2.7.0-CVE-2016-6836.patch 889 SHA256 a94812131e8baa66b81971579ab84b20bf15d544e2698448a5247ac0ddca0b3d SHA512 cf7f327f26aee5b6688eb662ced8aa07775ad9558b4a02db244303f6b7d37be9cd19b18d5725819b4708184105b98830864e0ad3af81373e59e880809036345b WHIRLPOOL df00627ad447162fdcac4b2c965a8cb5c916a7fb66d8c3a4f8f48bb2d869d7805cb3308cd495ff74ebf4840e7bc2d85abf8e666d78b3da9abb4e2bae22697a82
|
||||||
AUX qemu-2.5.0-usb-ndis-int-overflow.patch 2404 SHA256 caa4ff5ab038e88b2b09f04f2a9528fc47d42d35fbd35bbd7907afd292ef66db SHA512 f87de0a9f161f14814fafc883bd557f8f007a53729dc3c36145dd19ea9c52eabb81f6ada4e4a7122a461c9bed6f524ea0b92f9182b77a4c7cf9c8ecfc217f8e0 WHIRLPOOL 6022a3e0b125beb85efa2b6c1edf5a94dce27bd299d247078d418cf6515c8fc0ca1d8032034ef427c3d4681cc3536900099391b623152b2609cab2f4f963d046
|
AUX qemu-binfmt.initd-r1 7966 SHA256 5b4b432aa1e44f387c9eb789de0ec6322741fd36dd241f76520f17c6cd6ac49b SHA512 2ba0bff6eb2b6bac4ed440f793771ce9551cad48e38bddb6cf04f804faac2407e80879f66771910344ddcea45f0014095dcc8bfeb0aad5085ef048fd3612dbd8 WHIRLPOOL a2a1fb830a970757d1e203378c7d382b161b1040f3b8aaf0f22bb3b5e46467eff395474ff40d93c9f133bab307b345a6f75d63eae9f8dd8daf67324db41032f9
|
||||||
AUX qemu-2.5.1-CVE-2015-8558.patch 3237 SHA256 3320c5624a33076b36f39566a4c3bbe5f95adae44207512d791175bcfc3959ff SHA512 c6ea0ca7d0ea221e9704001d26dae143861463ec45c7a543f041520874dd6e3a2d4bdb6d1eca25097f265aa2a1600858c9908b59cdd640007ab057cf7b86083f WHIRLPOOL 0c3c683a79f68ab3073a3b5e6afe2b6184d66254bd8278e131d5aa199ff51d52e5b186521ff8799345b1f1977afc112550e1a7d4b684b2a3267e9caddd0f1576
|
DIST qemu-2.7.0.tar.bz2 26867760 SHA256 326e739506ba690daf69fc17bd3913a6c313d9928d743bd8eddb82f403f81e53 SHA512 654acaa7b3724a288e5d7e2a26ab780d9c9ed9f647fba00a906cbaffbe9d58fd666f2d962514aa2c5b391b4c53811ac3170d2eb51727f090bd19dfe45ca9a9db WHIRLPOOL dcb3e5f7da89dd8e14d636d7ebd476e076e0043880bb9ea3fb1c03cb4bcd4e5c7d3c4719da26c3ce521e3a3db5ae671e86f198ac1bc3474e774d75504fef8b8d
|
||||||
AUX qemu-2.5.1-CVE-2016-4020.patch 567 SHA256 6c8e933593cfbedc98de81bf01e394d1ca1d016109fcc81e91f6472d2092b1a0 SHA512 90ac43329cbbcc0451470e010a1a1bd32ef8891c1f2d7d7e54e870e740c77ea8dfdec30989d586aaea250de6ca294504bf7e88818bf35e3269cf528ea3e50ce5 WHIRLPOOL 7ea7c7af1f2a3f11bc5bfe7b708021bbcb03c00d354a733c0fad14193110559cd1561939bd5bb6597a84bc01e74a914ef9dc51f28c522473b424919edc17cdb3
|
EBUILD qemu-2.7.0.ebuild 20516 SHA256 987648bd2fd0f1ebf45493698ec2b9ed2e16d6abb38fd48eb793ef3b6d55c55b SHA512 bf0cd8fa256036002771d3e5476970d50ffc6b86c8b6a9b5a0048c4ac992b816fb5585d2fd1485b3adda3a55737b32e8e1f07bcea4200d3bac0a9ac98840e181 WHIRLPOOL 3f9b559d60a933339a52de83004632bdfc8c45285013cef86a5f99fe580eafa7443ea5cae9399b54865bb05bc1007492575f98ac109b2a17d37d10d44d8874bf
|
||||||
AUX qemu-2.5.1-stellaris_enet-overflow.patch 1569 SHA256 5d20aef8139068eeb63c167856c8f0004e8761227d9bb1fd67240c4b922f704a SHA512 92c015af82eb92bf5f6f4d6fd86b402636a61f0ac9572cc2f002d4c795ce133f7858a38336fd5f4a25c7157dea969d288bb73f00d9a8b3b8f517ba2aea6e4ba8 WHIRLPOOL 94c49f8f78864ac3da247b569d2afc2ee0d801482a00117a7898fb396440118ef3bc54e1b61023496184f37404c893a1ef7725ce6ca9a27ca596cdf38e747603
|
EBUILD qemu-9999.ebuild 20465 SHA256 0722782a27bbb312bc9bede6a556fd6f086e6c056cb4b8b197e3ec8c10801945 SHA512 3f5130a9cffb1cdf7460693e777c82ec289649ba74367417f1a865f7231a976de234b2be5c2882eeb358d1aecb2e59f3ddf8bd28a66be17bea4ef58b122564ae WHIRLPOOL a009c51c5f08c6e9ee89467b47eef435fd68b97c3e253a300662cf476f119ad4c96911040a72570d1f2aef3d44128b0c5544008918764430e0f9f0dde94b16ad
|
||||||
AUX qemu-2.5.1-xfs-linux-headers.patch 2634 SHA256 ca1eb8d4593d794541f375cb1425861e145aa036d440b9d29c4cb7b5102d018b SHA512 88b8a6178893e3354d90ad1a7cfc370fc05ffd2e3ea7c9cc8aeda9e129ea93d45838b5816afb46c0594886fbb129e3665a738f4c195183b843caedc0302530c0 WHIRLPOOL 193f1b89710ecbbb5b645a59ac6f3b7bad8191cc3228bad0427cb80c54e1b55d11d25abe1f59173b9669452f57a52f830d074bb106bdc3c05b6659826a4d561d
|
MISC ChangeLog 28480 SHA256 20cb806ded220afccc77c70ce040291665a4325b627cdc0f975f66919006aedb SHA512 93aa1616116d1d5e0456e14c86773373a65febd9128e72400ffeb7db5ee4721ceba0dc53607d86435049cbd910846b4197f2b15b00f39de601efaa6c90d8b9f3 WHIRLPOOL a54f9b7c1260a190174240edae87e47b7b9f39a51e8f1d03917748b2ea82e2e0721fb142cc7b33ce54e285deb8e4ba3fc483ab0c912f4ae28d3280777d9588f3
|
||||||
AUX qemu-2.6.0-crypto-static.patch 2364 SHA256 664627ff4aa4e971830aeb9125aa236c4dc94f3208ab51185210023058c45f70 SHA512 409d9b23d581d70b82134730be26d453fa0c50c10cde2a38e47b8d129f88fdc1116db307fda02e9286532452ca3a58cfac6ae05e34d296793c09fe8c3dff8de9 WHIRLPOOL 26c7e52a7f2afe6632218538f08b7c582f701d45baadb44fa0ac085318c8b34614028c40f7f80ca9d80cf6865d8047c3e0322ebe92d4dd76cf74ce7f7b122685
|
|
||||||
AUX qemu-binfmt.initd-r1 7966 SHA256 727939136aeecf4246412b12d2bde4e5b29aaa9e16254ff3aad19c688722f933 SHA512 0b4d1aa65070db4accc091ab3fe699b53d6a5877daa2aa73e6d46947ad15bf790804807bc9392cecb52553dc9a7739218b20260bd37922db857f62052a5540a4 WHIRLPOOL e4a5e08349d8719ab59f34008ecf80fdc5ef7ce83d44ec466ec8457fe3ea84499a92b8f4b0990304c8c3dc5929d4b04e50cfbc5334e486fd71e713f64b798520
|
|
||||||
DIST qemu-2.5.0.tar.bz2 25464996 SHA256 3443887401619fe33bfa5d900a4f2d6a79425ae2b7e43d5b8c36eb7a683772d4 SHA512 12153f94cc7f834fd6a85f25690c36f2331d88d414426fb8b9ac20a34e6f9222b1eda30b727674af583580fae90dfd6d0614a905dce1567d94cd049d426b9dd3 WHIRLPOOL 8f5717989d8d234ecf1763ee386b2e1f20c3b17918de130c6dae255e4523a230b2b01a759eba25e4b9f604c680d9b868c56f58bd71b7c6c2c22a2e46804435ef
|
|
||||||
DIST qemu-2.5.1.tar.bz2 25464539 SHA256 028752c33bb786abbfe496ba57315dc5a7d0a33b5a7a767f6d7a29020c525d2c SHA512 66959ad6a2a89f23c5daba245c76f71ddc03a33a1167bca639a042ebbf7329b2e698cd2c0e65c22a9874563a34256a48386aa9df6475b06d38db74187e3e3b3f WHIRLPOOL 32525271574692d56b7794dc63606659f46e6ae19a56dee31b3cec33dab9c4eb74147a65db4940229492d8680f38c2d05bc2a8fbcb4b6887b0c1cbe5fbbe44cf
|
|
||||||
DIST qemu-2.6.0.tar.bz2 25755267 SHA256 c9ac4a651b273233d21b8bec32e30507cb9cce7900841febc330956a1a8434ec SHA512 0d17075e52f7688cc05776ad7a76509d1f22ae8eda896fddb06c1fd6dea6da485422c8efb3ba118b054d9a413b7b02baba656a9131658dabdb71def50c92b215 WHIRLPOOL f9373bf66f67301787e7510ac161b0072ba7c7bc067e10215fb97a52524adaba0fcbc79a4c0cefac9c6e2b4e07380eb9d10f65ed6ce6867e43843043684231ed
|
|
||||||
EBUILD qemu-2.5.0-r2.ebuild 21214 SHA256 40db388f23f80b3c108af18974769e61878e32bc4dd725c3da8aca70e51e71a5 SHA512 df44ee15c2f1a501061ae7848ea6c6b21a15ffd88b9ab24363852f5de821422920d9fd92cd05eaa1e1659c3e487f32125be108a1dd25adff789453cf30f00fab WHIRLPOOL c4382d4c9d05e38ab3f36e4b01643c4545f191fe40ee87e44a60a807bb73594301306ef84c0bcf9d041f3314466459e9edde646fb171c35a8b2c24d0e99acd0e
|
|
||||||
EBUILD qemu-2.5.0-r3.ebuild 21502 SHA256 19ef690e777f8d5197e9c6a38fe966732e053ea2413e50272d7bf704791ac60e SHA512 e22cdcb75040dea34f0df43f1ac02b0a9402e8809368f0216fb4166a69c073f31f8346abdcfd05209e5250d477d7310bdfa9d1dd40519649e704f328aebca592 WHIRLPOOL 64b6c0229062a28c8581e78da82460254493973671da3ecd684239bb191e10c238eeb203135b3feb3d031f17dbb3a23ec256338e836dde900a0168224eaa879d
|
|
||||||
EBUILD qemu-2.5.1.ebuild 20907 SHA256 f5cecc86acbe07c591d105ba141a13904ee62d52841ee9ef145a02be5da98a01 SHA512 d886d261ff125a99fba87e32b11e5039160c98bbc77e0af1b0595cec7797d80921dd5803912e9fff193d136711dd88fddc3be3988c1e3a0370de4519b83c3325 WHIRLPOOL ed90306a3b349d30873fb0779e0f3b8b95b6aec1df46b4efe5d6094886252a63ef99da541490effc081a85dda9e07719c84e979f015792e0e5ddf44b61537a91
|
|
||||||
EBUILD qemu-2.6.0.ebuild 20344 SHA256 040a575871d8fafa93dee28e1792783d73abad7259ef8d15e2d50bd66413fb16 SHA512 3c31bc54af82e384112d3bd65edac42500bf456ad22f05dc0f9441df2cae826eb5000303a1c082b9caea9a66fec7fb7b694637c00f130fdf45f528d5b25527c5 WHIRLPOOL b7ee20c719488923caf38779002909d63b9fb35e48058be268f4859d2120204f6ccb8492408e07107a19442c66ddda4241db2e31237d0fb3679da9320f7c437e
|
|
||||||
EBUILD qemu-9999.ebuild 20344 SHA256 040a575871d8fafa93dee28e1792783d73abad7259ef8d15e2d50bd66413fb16 SHA512 3c31bc54af82e384112d3bd65edac42500bf456ad22f05dc0f9441df2cae826eb5000303a1c082b9caea9a66fec7fb7b694637c00f130fdf45f528d5b25527c5 WHIRLPOOL b7ee20c719488923caf38779002909d63b9fb35e48058be268f4859d2120204f6ccb8492408e07107a19442c66ddda4241db2e31237d0fb3679da9320f7c437e
|
|
||||||
MISC ChangeLog 22701 SHA256 e258a041f5e6fcb8a14016269728fcad885ad0518e32c8eb88a182e3cb4688fc SHA512 00d936f9be99eed9b0ba5ba523889967b6acc9929f4d14afb3d16bd000a243a1bf08fa59eb806af4d6b981fa8065a8e59ce49e341a1578a383850c83812630be WHIRLPOOL 4bd2daf92eea5aeb4aa4dc6238f28ad3a05dbe0c1d591fd2ff0b4c56442eb5712d7e18c7ea5524151daaf970c0fbae5d719e69b5f0ccfac1e6237af30a02d63b
|
|
||||||
MISC ChangeLog-2015 58193 SHA256 60c1a4f4c85515520ab14da920bbbf4a6813491ce16b5357a0456ea588815a5c SHA512 ddfe8e75aabe59b731a4a8b31839d8c71fd516620306d2bc99d7641cc501652974e053104caafa7550c5ad33b6834295f6743a98b9419d292b8bf6f67918ccd3 WHIRLPOOL a6841f79c3ba1cbf76a8c7fde296a2912c46ddd251494dca3bf3bc13391c80595b6f80125c383823899942248008ede7065b0f5c8e43f9bc1d0464aa62cc187f
|
MISC ChangeLog-2015 58193 SHA256 60c1a4f4c85515520ab14da920bbbf4a6813491ce16b5357a0456ea588815a5c SHA512 ddfe8e75aabe59b731a4a8b31839d8c71fd516620306d2bc99d7641cc501652974e053104caafa7550c5ad33b6834295f6743a98b9419d292b8bf6f67918ccd3 WHIRLPOOL a6841f79c3ba1cbf76a8c7fde296a2912c46ddd251494dca3bf3bc13391c80595b6f80125c383823899942248008ede7065b0f5c8e43f9bc1d0464aa62cc187f
|
||||||
MISC metadata.xml 3925 SHA256 d1c219b7da0cbf77919cd1e055acbb3f6788a574fd802c98a43c89a411697b36 SHA512 3ff45d1c8ede12b4eedc7d01f39777b76a1cbd0ba9364299dec99d4b4a05cade5784d6f6e50197d5b5ae1f1b8e831c49da195eb53263c49b7d16aec8ee28b6e6 WHIRLPOOL bc25783fac0f3f13318834cc535404af9af20de16c7aeec222e59dc2ed7740ac5e767b329a5bcd6356d0cbae2428e278515f1446aa8ecb87a873bf4dbe04bf41
|
MISC metadata.xml 3925 SHA256 d1c219b7da0cbf77919cd1e055acbb3f6788a574fd802c98a43c89a411697b36 SHA512 3ff45d1c8ede12b4eedc7d01f39777b76a1cbd0ba9364299dec99d4b4a05cade5784d6f6e50197d5b5ae1f1b8e831c49da195eb53263c49b7d16aec8ee28b6e6 WHIRLPOOL bc25783fac0f3f13318834cc535404af9af20de16c7aeec222e59dc2ed7740ac5e767b329a5bcd6356d0cbae2428e278515f1446aa8ecb87a873bf4dbe04bf41
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
From 4b3a4f2d458ca5a7c6c16ac36a8d9ac22cc253d6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Greg Kurz <gkurz@linux.vnet.ibm.com>
|
|
||||||
Date: Wed, 23 Dec 2015 10:56:58 +0100
|
|
||||||
Subject: [PATCH] virtio-9p: use accessor to get thread_pool
|
|
||||||
|
|
||||||
The aio_context_new() function does not allocate a thread pool. This is
|
|
||||||
deferred to the first call to the aio_get_thread_pool() accessor. It is
|
|
||||||
hence forbidden to access the thread_pool field directly, as it may be
|
|
||||||
NULL. The accessor *must* be used always.
|
|
||||||
|
|
||||||
Fixes: ebac1202c95a4f1b76b6ef3f0f63926fa76e753e
|
|
||||||
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
|
|
||||||
Tested-by: Michael Tokarev <mjt@tls.msk.ru>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
|
|
||||||
---
|
|
||||||
hw/9pfs/virtio-9p-coth.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/hw/9pfs/virtio-9p-coth.c b/hw/9pfs/virtio-9p-coth.c
|
|
||||||
index fb6e8f8..ab9425c 100644
|
|
||||||
--- a/hw/9pfs/virtio-9p-coth.c
|
|
||||||
+++ b/hw/9pfs/virtio-9p-coth.c
|
|
||||||
@@ -36,6 +36,6 @@ static int coroutine_enter_func(void *arg)
|
|
||||||
void co_run_in_worker_bh(void *opaque)
|
|
||||||
{
|
|
||||||
Coroutine *co = opaque;
|
|
||||||
- thread_pool_submit_aio(qemu_get_aio_context()->thread_pool,
|
|
||||||
+ thread_pool_submit_aio(aio_get_thread_pool(qemu_get_aio_context()),
|
|
||||||
coroutine_enter_func, co, coroutine_enter_cb, co);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
|||||||
https://bugs.gentoo.org/568246
|
|
||||||
|
|
||||||
From 156a2e4dbffa85997636a7a39ef12da6f1b40254 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
Date: Mon, 14 Dec 2015 09:21:23 +0100
|
|
||||||
Subject: [PATCH] ehci: make idt processing more robust
|
|
||||||
|
|
||||||
Make ehci_process_itd return an error in case we didn't do any actual
|
|
||||||
iso transfer because we've found no active transaction. That'll avoid
|
|
||||||
ehci happily run in circles forever if the guest builds a loop out of
|
|
||||||
idts.
|
|
||||||
|
|
||||||
This is CVE-2015-8558.
|
|
||||||
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Tested-by: P J P <ppandit@redhat.com>
|
|
||||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
---
|
|
||||||
hw/usb/hcd-ehci.c | 5 +++--
|
|
||||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
|
|
||||||
index 4e2161b..d07f228 100644
|
|
||||||
--- a/hw/usb/hcd-ehci.c
|
|
||||||
+++ b/hw/usb/hcd-ehci.c
|
|
||||||
@@ -1389,7 +1389,7 @@ static int ehci_process_itd(EHCIState *ehci,
|
|
||||||
{
|
|
||||||
USBDevice *dev;
|
|
||||||
USBEndpoint *ep;
|
|
||||||
- uint32_t i, len, pid, dir, devaddr, endp;
|
|
||||||
+ uint32_t i, len, pid, dir, devaddr, endp, xfers = 0;
|
|
||||||
uint32_t pg, off, ptr1, ptr2, max, mult;
|
|
||||||
|
|
||||||
ehci->periodic_sched_active = PERIODIC_ACTIVE;
|
|
||||||
@@ -1479,9 +1479,10 @@ static int ehci_process_itd(EHCIState *ehci,
|
|
||||||
ehci_raise_irq(ehci, USBSTS_INT);
|
|
||||||
}
|
|
||||||
itd->transact[i] &= ~ITD_XACT_ACTIVE;
|
|
||||||
+ xfers++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- return 0;
|
|
||||||
+ return xfers ? 0 : -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
2.6.2
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
|||||||
https://bugs.gentoo.org/567868
|
|
||||||
|
|
||||||
From aa4a3dce1c88ed51b616806b8214b7c8428b7470 Mon Sep 17 00:00:00 2001
|
|
||||||
From: P J P <ppandit@redhat.com>
|
|
||||||
Date: Tue, 15 Dec 2015 12:27:54 +0530
|
|
||||||
Subject: [PATCH] net: vmxnet3: avoid memory leakage in activate_device
|
|
||||||
|
|
||||||
Vmxnet3 device emulator does not check if the device is active
|
|
||||||
before activating it, also it did not free the transmit & receive
|
|
||||||
buffers while deactivating the device, thus resulting in memory
|
|
||||||
leakage on the host. This patch fixes both these issues to avoid
|
|
||||||
host memory leakage.
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Reviewed-by: Dmitry Fleytman <dmitry@daynix.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
|
||||||
---
|
|
||||||
hw/net/vmxnet3.c | 24 ++++++++++++++++--------
|
|
||||||
1 file changed, 16 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
|
|
||||||
index a5dd79a..9c1adfc 100644
|
|
||||||
--- a/hw/net/vmxnet3.c
|
|
||||||
+++ b/hw/net/vmxnet3.c
|
|
||||||
@@ -1194,8 +1194,13 @@ static void vmxnet3_reset_mac(VMXNET3State *s)
|
|
||||||
|
|
||||||
static void vmxnet3_deactivate_device(VMXNET3State *s)
|
|
||||||
{
|
|
||||||
- VMW_CBPRN("Deactivating vmxnet3...");
|
|
||||||
- s->device_active = false;
|
|
||||||
+ if (s->device_active) {
|
|
||||||
+ VMW_CBPRN("Deactivating vmxnet3...");
|
|
||||||
+ vmxnet_tx_pkt_reset(s->tx_pkt);
|
|
||||||
+ vmxnet_tx_pkt_uninit(s->tx_pkt);
|
|
||||||
+ vmxnet_rx_pkt_uninit(s->rx_pkt);
|
|
||||||
+ s->device_active = false;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
static void vmxnet3_reset(VMXNET3State *s)
|
|
||||||
@@ -1204,7 +1209,6 @@ static void vmxnet3_reset(VMXNET3State *s)
|
|
||||||
|
|
||||||
vmxnet3_deactivate_device(s);
|
|
||||||
vmxnet3_reset_interrupt_states(s);
|
|
||||||
- vmxnet_tx_pkt_reset(s->tx_pkt);
|
|
||||||
s->drv_shmem = 0;
|
|
||||||
s->tx_sop = true;
|
|
||||||
s->skip_current_tx_pkt = false;
|
|
||||||
@@ -1431,6 +1435,12 @@ static void vmxnet3_activate_device(VMXNET3State *s)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* Verify if device is active */
|
|
||||||
+ if (s->device_active) {
|
|
||||||
+ VMW_CFPRN("Vmxnet3 device is active");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
vmxnet3_adjust_by_guest_type(s);
|
|
||||||
vmxnet3_update_features(s);
|
|
||||||
vmxnet3_update_pm_state(s);
|
|
||||||
@@ -1627,7 +1637,7 @@ static void vmxnet3_handle_command(VMXNET3State *s, uint64_t cmd)
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VMXNET3_CMD_QUIESCE_DEV:
|
|
||||||
- VMW_CBPRN("Set: VMXNET3_CMD_QUIESCE_DEV - pause the device");
|
|
||||||
+ VMW_CBPRN("Set: VMXNET3_CMD_QUIESCE_DEV - deactivate the device");
|
|
||||||
vmxnet3_deactivate_device(s);
|
|
||||||
break;
|
|
||||||
|
|
||||||
@@ -1741,7 +1751,7 @@ vmxnet3_io_bar1_write(void *opaque,
|
|
||||||
* shared address only after we get the high part
|
|
||||||
*/
|
|
||||||
if (val == 0) {
|
|
||||||
- s->device_active = false;
|
|
||||||
+ vmxnet3_deactivate_device(s);
|
|
||||||
}
|
|
||||||
s->temp_shared_guest_driver_memory = val;
|
|
||||||
s->drv_shmem = 0;
|
|
||||||
@@ -2021,9 +2031,7 @@ static bool vmxnet3_peer_has_vnet_hdr(VMXNET3State *s)
|
|
||||||
static void vmxnet3_net_uninit(VMXNET3State *s)
|
|
||||||
{
|
|
||||||
g_free(s->mcast_list);
|
|
||||||
- vmxnet_tx_pkt_reset(s->tx_pkt);
|
|
||||||
- vmxnet_tx_pkt_uninit(s->tx_pkt);
|
|
||||||
- vmxnet_rx_pkt_uninit(s->rx_pkt);
|
|
||||||
+ vmxnet3_deactivate_device(s);
|
|
||||||
qemu_del_nic(s->nic);
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.6.2
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
From 36fef36b91f7ec0435215860f1458b5342ce2811 Mon Sep 17 00:00:00 2001
|
|
||||||
From: P J P <ppandit@redhat.com>
|
|
||||||
Date: Mon, 21 Dec 2015 15:13:13 +0530
|
|
||||||
Subject: [PATCH] scsi: initialise info object with appropriate size
|
|
||||||
|
|
||||||
While processing controller 'CTRL_GET_INFO' command, the routine
|
|
||||||
'megasas_ctrl_get_info' overflows the '&info' object size. Use its
|
|
||||||
appropriate size to null initialise it.
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Message-Id: <alpine.LFD.2.20.1512211501420.22471@wniryva>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
||||||
Signed-off-by: P J P <ppandit@redhat.com>
|
|
||||||
---
|
|
||||||
hw/scsi/megasas.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
|
|
||||||
index d7dc667..576f56c 100644
|
|
||||||
--- a/hw/scsi/megasas.c
|
|
||||||
+++ b/hw/scsi/megasas.c
|
|
||||||
@@ -718,7 +718,7 @@ static int megasas_ctrl_get_info(MegasasState *s, MegasasCmd *cmd)
|
|
||||||
BusChild *kid;
|
|
||||||
int num_pd_disks = 0;
|
|
||||||
|
|
||||||
- memset(&info, 0x0, cmd->iov_size);
|
|
||||||
+ memset(&info, 0x0, dcmd_size);
|
|
||||||
if (cmd->iov_size < dcmd_size) {
|
|
||||||
trace_megasas_dcmd_invalid_xfer_len(cmd->index, cmd->iov_size,
|
|
||||||
dcmd_size);
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,121 +0,0 @@
|
|||||||
From 64ffbe04eaafebf4045a3ace52a360c14959d196 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
|
|
||||||
Date: Wed, 13 Jan 2016 09:09:58 +0100
|
|
||||||
Subject: [PATCH] hmp: fix sendkey out of bounds write (CVE-2015-8619)
|
|
||||||
|
|
||||||
When processing 'sendkey' command, hmp_sendkey routine null
|
|
||||||
terminates the 'keyname_buf' array. This results in an OOB
|
|
||||||
write issue, if 'keyname_len' was to fall outside of
|
|
||||||
'keyname_buf' array.
|
|
||||||
|
|
||||||
Since the keyname's length is known the keyname_buf can be
|
|
||||||
removed altogether by adding a length parameter to
|
|
||||||
index_from_key() and using it for the error output as well.
|
|
||||||
|
|
||||||
Reported-by: Ling Liu <liuling-it@360.cn>
|
|
||||||
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
|
|
||||||
Message-Id: <20160113080958.GA18934@olga>
|
|
||||||
[Comparison with "<" dumbed down, test for junk after strtoul()
|
|
||||||
tweaked]
|
|
||||||
Signed-off-by: Markus Armbruster <armbru@redhat.com>
|
|
||||||
---
|
|
||||||
hmp.c | 18 ++++++++----------
|
|
||||||
include/ui/console.h | 2 +-
|
|
||||||
ui/input-legacy.c | 5 +++--
|
|
||||||
3 files changed, 12 insertions(+), 13 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hmp.c b/hmp.c
|
|
||||||
index 54f2620..9c571f5 100644
|
|
||||||
--- a/hmp.c
|
|
||||||
+++ b/hmp.c
|
|
||||||
@@ -1731,21 +1731,18 @@ void hmp_sendkey(Monitor *mon, const QDict *qdict)
|
|
||||||
int has_hold_time = qdict_haskey(qdict, "hold-time");
|
|
||||||
int hold_time = qdict_get_try_int(qdict, "hold-time", -1);
|
|
||||||
Error *err = NULL;
|
|
||||||
- char keyname_buf[16];
|
|
||||||
char *separator;
|
|
||||||
int keyname_len;
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
separator = strchr(keys, '-');
|
|
||||||
keyname_len = separator ? separator - keys : strlen(keys);
|
|
||||||
- pstrcpy(keyname_buf, sizeof(keyname_buf), keys);
|
|
||||||
|
|
||||||
/* Be compatible with old interface, convert user inputted "<" */
|
|
||||||
- if (!strncmp(keyname_buf, "<", 1) && keyname_len == 1) {
|
|
||||||
- pstrcpy(keyname_buf, sizeof(keyname_buf), "less");
|
|
||||||
+ if (keys[0] == '<' && keyname_len == 1) {
|
|
||||||
+ keys = "less";
|
|
||||||
keyname_len = 4;
|
|
||||||
}
|
|
||||||
- keyname_buf[keyname_len] = 0;
|
|
||||||
|
|
||||||
keylist = g_malloc0(sizeof(*keylist));
|
|
||||||
keylist->value = g_malloc0(sizeof(*keylist->value));
|
|
||||||
@@ -1758,16 +1755,17 @@ void hmp_sendkey(Monitor *mon, const QDict *qdict)
|
|
||||||
}
|
|
||||||
tmp = keylist;
|
|
||||||
|
|
||||||
- if (strstart(keyname_buf, "0x", NULL)) {
|
|
||||||
+ if (strstart(keys, "0x", NULL)) {
|
|
||||||
char *endp;
|
|
||||||
- int value = strtoul(keyname_buf, &endp, 0);
|
|
||||||
- if (*endp != '\0') {
|
|
||||||
+ int value = strtoul(keys, &endp, 0);
|
|
||||||
+ assert(endp <= keys + keyname_len);
|
|
||||||
+ if (endp != keys + keyname_len) {
|
|
||||||
goto err_out;
|
|
||||||
}
|
|
||||||
keylist->value->type = KEY_VALUE_KIND_NUMBER;
|
|
||||||
keylist->value->u.number = value;
|
|
||||||
} else {
|
|
||||||
- int idx = index_from_key(keyname_buf);
|
|
||||||
+ int idx = index_from_key(keys, keyname_len);
|
|
||||||
if (idx == Q_KEY_CODE_MAX) {
|
|
||||||
goto err_out;
|
|
||||||
}
|
|
||||||
@@ -1789,7 +1787,7 @@ out:
|
|
||||||
return;
|
|
||||||
|
|
||||||
err_out:
|
|
||||||
- monitor_printf(mon, "invalid parameter: %s\n", keyname_buf);
|
|
||||||
+ monitor_printf(mon, "invalid parameter: %.*s\n", keyname_len, keys);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/include/ui/console.h b/include/ui/console.h
|
|
||||||
index adac36d..116bc2b 100644
|
|
||||||
--- a/include/ui/console.h
|
|
||||||
+++ b/include/ui/console.h
|
|
||||||
@@ -448,7 +448,7 @@ static inline int vnc_display_pw_expire(const char *id, time_t expires)
|
|
||||||
void curses_display_init(DisplayState *ds, int full_screen);
|
|
||||||
|
|
||||||
/* input.c */
|
|
||||||
-int index_from_key(const char *key);
|
|
||||||
+int index_from_key(const char *key, size_t key_length);
|
|
||||||
|
|
||||||
/* gtk.c */
|
|
||||||
void early_gtk_display_init(int opengl);
|
|
||||||
diff --git a/ui/input-legacy.c b/ui/input-legacy.c
|
|
||||||
index 35dfc27..3454055 100644
|
|
||||||
--- a/ui/input-legacy.c
|
|
||||||
+++ b/ui/input-legacy.c
|
|
||||||
@@ -57,12 +57,13 @@ struct QEMUPutLEDEntry {
|
|
||||||
static QTAILQ_HEAD(, QEMUPutLEDEntry) led_handlers =
|
|
||||||
QTAILQ_HEAD_INITIALIZER(led_handlers);
|
|
||||||
|
|
||||||
-int index_from_key(const char *key)
|
|
||||||
+int index_from_key(const char *key, size_t key_length)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; QKeyCode_lookup[i] != NULL; i++) {
|
|
||||||
- if (!strcmp(key, QKeyCode_lookup[i])) {
|
|
||||||
+ if (!strncmp(key, QKeyCode_lookup[i], key_length) &&
|
|
||||||
+ !QKeyCode_lookup[i][key_length]) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
|||||||
https://bugs.gentoo.org/570110
|
|
||||||
|
|
||||||
From 007cd223de527b5f41278f2d886c1a4beb3e67aa Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Mon, 28 Dec 2015 16:24:08 +0530
|
|
||||||
Subject: [PATCH] net: rocker: fix an incorrect array bounds check
|
|
||||||
|
|
||||||
While processing transmit(tx) descriptors in 'tx_consume' routine
|
|
||||||
the switch emulator suffers from an off-by-one error, if a
|
|
||||||
descriptor was to have more than allowed(ROCKER_TX_FRAGS_MAX=16)
|
|
||||||
fragments. Fix an incorrect bounds check to avoid it.
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
|
||||||
---
|
|
||||||
hw/net/rocker/rocker.c | 8 ++++----
|
|
||||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/net/rocker/rocker.c b/hw/net/rocker/rocker.c
|
|
||||||
index c57f1a6..2e77e50 100644
|
|
||||||
--- a/hw/net/rocker/rocker.c
|
|
||||||
+++ b/hw/net/rocker/rocker.c
|
|
||||||
@@ -232,6 +232,9 @@ static int tx_consume(Rocker *r, DescInfo *info)
|
|
||||||
frag_addr = rocker_tlv_get_le64(tlvs[ROCKER_TLV_TX_FRAG_ATTR_ADDR]);
|
|
||||||
frag_len = rocker_tlv_get_le16(tlvs[ROCKER_TLV_TX_FRAG_ATTR_LEN]);
|
|
||||||
|
|
||||||
+ if (iovcnt >= ROCKER_TX_FRAGS_MAX) {
|
|
||||||
+ goto err_too_many_frags;
|
|
||||||
+ }
|
|
||||||
iov[iovcnt].iov_len = frag_len;
|
|
||||||
iov[iovcnt].iov_base = g_malloc(frag_len);
|
|
||||||
if (!iov[iovcnt].iov_base) {
|
|
||||||
@@ -244,10 +247,7 @@ static int tx_consume(Rocker *r, DescInfo *info)
|
|
||||||
err = -ROCKER_ENXIO;
|
|
||||||
goto err_bad_io;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- if (++iovcnt > ROCKER_TX_FRAGS_MAX) {
|
|
||||||
- goto err_too_many_frags;
|
|
||||||
- }
|
|
||||||
+ iovcnt++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (iovcnt) {
|
|
||||||
--
|
|
||||||
2.6.2
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
|||||||
https://bugs.gentoo.org/570988
|
|
||||||
|
|
||||||
From aa7f9966dfdff500bbbf1956d9e115b1fa8987a6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Thu, 31 Dec 2015 17:05:27 +0530
|
|
||||||
Subject: [PATCH] net: ne2000: fix bounds check in ioport operations
|
|
||||||
|
|
||||||
While doing ioport r/w operations, ne2000 device emulation suffers
|
|
||||||
from OOB r/w errors. Update respective array bounds check to avoid
|
|
||||||
OOB access.
|
|
||||||
|
|
||||||
Reported-by: Ling Liu <liuling-it@360.cn>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
|
||||||
---
|
|
||||||
hw/net/ne2000.c | 10 ++++++----
|
|
||||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/net/ne2000.c b/hw/net/ne2000.c
|
|
||||||
index 010f9ef..a3dffff 100644
|
|
||||||
--- a/hw/net/ne2000.c
|
|
||||||
+++ b/hw/net/ne2000.c
|
|
||||||
@@ -467,8 +467,9 @@ static inline void ne2000_mem_writel(NE2000State *s, uint32_t addr,
|
|
||||||
uint32_t val)
|
|
||||||
{
|
|
||||||
addr &= ~1; /* XXX: check exact behaviour if not even */
|
|
||||||
- if (addr < 32 ||
|
|
||||||
- (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {
|
|
||||||
+ if (addr < 32
|
|
||||||
+ || (addr >= NE2000_PMEM_START
|
|
||||||
+ && addr + sizeof(uint32_t) <= NE2000_MEM_SIZE)) {
|
|
||||||
stl_le_p(s->mem + addr, val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -497,8 +498,9 @@ static inline uint32_t ne2000_mem_readw(NE2000State *s, uint32_t addr)
|
|
||||||
static inline uint32_t ne2000_mem_readl(NE2000State *s, uint32_t addr)
|
|
||||||
{
|
|
||||||
addr &= ~1; /* XXX: check exact behaviour if not even */
|
|
||||||
- if (addr < 32 ||
|
|
||||||
- (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {
|
|
||||||
+ if (addr < 32
|
|
||||||
+ || (addr >= NE2000_PMEM_START
|
|
||||||
+ && addr + sizeof(uint32_t) <= NE2000_MEM_SIZE)) {
|
|
||||||
return ldl_le_p(s->mem + addr);
|
|
||||||
} else {
|
|
||||||
return 0xffffffff;
|
|
||||||
--
|
|
||||||
2.6.2
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
|||||||
https://bugs.gentoo.org/571566
|
|
||||||
|
|
||||||
From 4ab0359a8ae182a7ac5c99609667273167703fab Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Mon, 11 Jan 2016 14:10:42 -0500
|
|
||||||
Subject: [PATCH] ide: ahci: reset ncq object to unused on error
|
|
||||||
|
|
||||||
When processing NCQ commands, AHCI device emulation prepares a
|
|
||||||
NCQ transfer object; To which an aio control block(aiocb) object
|
|
||||||
is assigned in 'execute_ncq_command'. In case, when the NCQ
|
|
||||||
command is invalid, the 'aiocb' object is not assigned, and NCQ
|
|
||||||
transfer object is left as 'used'. This leads to a use after
|
|
||||||
free kind of error in 'bdrv_aio_cancel_async' via 'ahci_reset_port'.
|
|
||||||
Reset NCQ transfer object to 'unused' to avoid it.
|
|
||||||
|
|
||||||
[Maintainer edit: s/ACHI/AHCI/ in the commit message. --js]
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Reviewed-by: John Snow <jsnow@redhat.com>
|
|
||||||
Message-id: 1452282511-4116-1-git-send-email-ppandit@redhat.com
|
|
||||||
Signed-off-by: John Snow <jsnow@redhat.com>
|
|
||||||
---
|
|
||||||
hw/ide/ahci.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
|
|
||||||
index dd1912e..17f1cbd 100644
|
|
||||||
--- a/hw/ide/ahci.c
|
|
||||||
+++ b/hw/ide/ahci.c
|
|
||||||
@@ -910,6 +910,7 @@ static void ncq_err(NCQTransferState *ncq_tfs)
|
|
||||||
ide_state->error = ABRT_ERR;
|
|
||||||
ide_state->status = READY_STAT | ERR_STAT;
|
|
||||||
ncq_tfs->drive->port_regs.scr_err |= (1 << ncq_tfs->tag);
|
|
||||||
+ ncq_tfs->used = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ncq_finish(NCQTransferState *ncq_tfs)
|
|
||||||
--
|
|
||||||
2.6.2
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
|||||||
From 66f8fd9dda312191b78d2a2ba2848bcee76127a2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Gabriel L. Somlo" <somlo@cmu.edu>
|
|
||||||
Date: Thu, 5 Nov 2015 09:32:50 -0500
|
|
||||||
Subject: [PATCH] fw_cfg: avoid calculating invalid current entry pointer
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
When calculating a pointer to the currently selected fw_cfg item, the
|
|
||||||
following is used:
|
|
||||||
|
|
||||||
FWCfgEntry *e = &s->entries[arch][s->cur_entry & FW_CFG_ENTRY_MASK];
|
|
||||||
|
|
||||||
When s->cur_entry is FW_CFG_INVALID, we are calculating the address of
|
|
||||||
a non-existent element in s->entries[arch][...], which is undefined.
|
|
||||||
|
|
||||||
This patch ensures the resulting entry pointer is set to NULL whenever
|
|
||||||
s->cur_entry is FW_CFG_INVALID.
|
|
||||||
|
|
||||||
Reported-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
|
|
||||||
Message-id: 1446733972-1602-5-git-send-email-somlo@cmu.edu
|
|
||||||
Cc: Marc Marí <markmb@redhat.com>
|
|
||||||
Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
|
|
||||||
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
---
|
|
||||||
hw/nvram/fw_cfg.c | 6 ++++--
|
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
|
|
||||||
index c2d3a0a..046fa74 100644
|
|
||||||
--- a/hw/nvram/fw_cfg.c
|
|
||||||
+++ b/hw/nvram/fw_cfg.c
|
|
||||||
@@ -277,7 +277,8 @@ static int fw_cfg_select(FWCfgState *s, uint16_t key)
|
|
||||||
static uint8_t fw_cfg_read(FWCfgState *s)
|
|
||||||
{
|
|
||||||
int arch = !!(s->cur_entry & FW_CFG_ARCH_LOCAL);
|
|
||||||
- FWCfgEntry *e = &s->entries[arch][s->cur_entry & FW_CFG_ENTRY_MASK];
|
|
||||||
+ FWCfgEntry *e = (s->cur_entry == FW_CFG_INVALID) ? NULL :
|
|
||||||
+ &s->entries[arch][s->cur_entry & FW_CFG_ENTRY_MASK];
|
|
||||||
uint8_t ret;
|
|
||||||
|
|
||||||
if (s->cur_entry == FW_CFG_INVALID || !e->data || s->cur_offset >= e->len)
|
|
||||||
@@ -342,7 +343,8 @@ static void fw_cfg_dma_transfer(FWCfgState *s)
|
|
||||||
}
|
|
||||||
|
|
||||||
arch = !!(s->cur_entry & FW_CFG_ARCH_LOCAL);
|
|
||||||
- e = &s->entries[arch][s->cur_entry & FW_CFG_ENTRY_MASK];
|
|
||||||
+ e = (s->cur_entry == FW_CFG_INVALID) ? NULL :
|
|
||||||
+ &s->entries[arch][s->cur_entry & FW_CFG_ENTRY_MASK];
|
|
||||||
|
|
||||||
if (dma.control & FW_CFG_DMA_CTL_READ) {
|
|
||||||
read = 1;
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
|||||||
From 4c1396cb576c9b14425558b73de1584c7a9735d7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: P J P <ppandit@redhat.com>
|
|
||||||
Date: Fri, 18 Dec 2015 11:35:07 +0530
|
|
||||||
Subject: [PATCH] i386: avoid null pointer dereference
|
|
||||||
|
|
||||||
Hello,
|
|
||||||
|
|
||||||
A null pointer dereference issue was reported by Mr Ling Liu, CC'd here. It
|
|
||||||
occurs while doing I/O port write operations via hmp interface. In that,
|
|
||||||
'current_cpu' remains null as it is not called from cpu_exec loop, which
|
|
||||||
results in the said issue.
|
|
||||||
|
|
||||||
Below is a proposed (tested)patch to fix this issue; Does it look okay?
|
|
||||||
|
|
||||||
===
|
|
||||||
From ae88a4947fab9a148cd794f8ad2d812e7f5a1d0f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Fri, 18 Dec 2015 11:16:07 +0530
|
|
||||||
Subject: [PATCH] i386: avoid null pointer dereference
|
|
||||||
|
|
||||||
When I/O port write operation is called from hmp interface,
|
|
||||||
'current_cpu' remains null, as it is not called from cpu_exec()
|
|
||||||
loop. This leads to a null pointer dereference in vapic_write
|
|
||||||
routine. Add check to avoid it.
|
|
||||||
|
|
||||||
Reported-by: Ling Liu <liuling-it@360.cn>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Message-Id: <alpine.LFD.2.20.1512181129320.9805@wniryva>
|
|
||||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
||||||
Signed-off-by: P J P <ppandit@redhat.com>
|
|
||||||
---
|
|
||||||
hw/i386/kvmvapic.c | 15 ++++++++++-----
|
|
||||||
1 file changed, 10 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c
|
|
||||||
index c6d34b2..f0922da 100644
|
|
||||||
--- a/hw/i386/kvmvapic.c
|
|
||||||
+++ b/hw/i386/kvmvapic.c
|
|
||||||
@@ -634,13 +634,18 @@ static int vapic_prepare(VAPICROMState *s)
|
|
||||||
static void vapic_write(void *opaque, hwaddr addr, uint64_t data,
|
|
||||||
unsigned int size)
|
|
||||||
{
|
|
||||||
- CPUState *cs = current_cpu;
|
|
||||||
- X86CPU *cpu = X86_CPU(cs);
|
|
||||||
- CPUX86State *env = &cpu->env;
|
|
||||||
- hwaddr rom_paddr;
|
|
||||||
VAPICROMState *s = opaque;
|
|
||||||
+ X86CPU *cpu;
|
|
||||||
+ CPUX86State *env;
|
|
||||||
+ hwaddr rom_paddr;
|
|
||||||
|
|
||||||
- cpu_synchronize_state(cs);
|
|
||||||
+ if (!current_cpu) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ cpu_synchronize_state(current_cpu);
|
|
||||||
+ cpu = X86_CPU(current_cpu);
|
|
||||||
+ env = &cpu->env;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The VAPIC supports two PIO-based hypercalls, both via port 0x7E.
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,98 +0,0 @@
|
|||||||
From dd793a74882477ca38d49e191110c17dfee51dcc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Date: Tue, 19 Jan 2016 14:17:20 +0100
|
|
||||||
Subject: [PATCH] e1000: eliminate infinite loops on out-of-bounds transfer
|
|
||||||
start
|
|
||||||
|
|
||||||
The start_xmit() and e1000_receive_iov() functions implement DMA transfers
|
|
||||||
iterating over a set of descriptors that the guest's e1000 driver
|
|
||||||
prepares:
|
|
||||||
|
|
||||||
- the TDLEN and RDLEN registers store the total size of the descriptor
|
|
||||||
area,
|
|
||||||
|
|
||||||
- while the TDH and RDH registers store the offset (in whole tx / rx
|
|
||||||
descriptors) into the area where the transfer is supposed to start.
|
|
||||||
|
|
||||||
Each time a descriptor is processed, the TDH and RDH register is bumped
|
|
||||||
(as appropriate for the transfer direction).
|
|
||||||
|
|
||||||
QEMU already contains logic to deal with bogus transfers submitted by the
|
|
||||||
guest:
|
|
||||||
|
|
||||||
- Normally, the transmit case wants to increase TDH from its initial value
|
|
||||||
to TDT. (TDT is allowed to be numerically smaller than the initial TDH
|
|
||||||
value; wrapping at or above TDLEN bytes to zero is normal.) The failsafe
|
|
||||||
that QEMU currently has here is a check against reaching the original
|
|
||||||
TDH value again -- a complete wraparound, which should never happen.
|
|
||||||
|
|
||||||
- In the receive case RDH is increased from its initial value until
|
|
||||||
"total_size" bytes have been received; preferably in a single step, or
|
|
||||||
in "s->rxbuf_size" byte steps, if the latter is smaller. However, null
|
|
||||||
RX descriptors are skipped without receiving data, while RDH is
|
|
||||||
incremented just the same. QEMU tries to prevent an infinite loop
|
|
||||||
(processing only null RX descriptors) by detecting whether RDH assumes
|
|
||||||
its original value during the loop. (Again, wrapping from RDLEN to 0 is
|
|
||||||
normal.)
|
|
||||||
|
|
||||||
What both directions miss is that the guest could program TDLEN and RDLEN
|
|
||||||
so low, and the initial TDH and RDH so high, that these registers will
|
|
||||||
immediately be truncated to zero, and then never reassume their initial
|
|
||||||
values in the loop -- a full wraparound will never occur.
|
|
||||||
|
|
||||||
The condition that expresses this is:
|
|
||||||
|
|
||||||
xdh_start >= s->mac_reg[XDLEN] / sizeof(desc)
|
|
||||||
|
|
||||||
i.e., TDH or RDH start out after the last whole rx or tx descriptor that
|
|
||||||
fits into the TDLEN or RDLEN sized area.
|
|
||||||
|
|
||||||
This condition could be checked before we enter the loops, but
|
|
||||||
pci_dma_read() / pci_dma_write() knows how to fill in buffers safely for
|
|
||||||
bogus DMA addresses, so we just extend the existing failsafes with the
|
|
||||||
above condition.
|
|
||||||
|
|
||||||
This is CVE-2016-1981.
|
|
||||||
|
|
||||||
Cc: "Michael S. Tsirkin" <mst@redhat.com>
|
|
||||||
Cc: Petr Matousek <pmatouse@redhat.com>
|
|
||||||
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
|
||||||
Cc: Prasad Pandit <ppandit@redhat.com>
|
|
||||||
Cc: Michael Roth <mdroth@linux.vnet.ibm.com>
|
|
||||||
Cc: Jason Wang <jasowang@redhat.com>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1296044
|
|
||||||
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Reviewed-by: Jason Wang <jasowang@redhat.com>
|
|
||||||
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
|
||||||
---
|
|
||||||
hw/net/e1000.c | 6 ++++--
|
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/net/e1000.c b/hw/net/e1000.c
|
|
||||||
index 4eda7a3..0387fa0 100644
|
|
||||||
--- a/hw/net/e1000.c
|
|
||||||
+++ b/hw/net/e1000.c
|
|
||||||
@@ -909,7 +909,8 @@ start_xmit(E1000State *s)
|
|
||||||
* bogus values to TDT/TDLEN.
|
|
||||||
* there's nothing too intelligent we could do about this.
|
|
||||||
*/
|
|
||||||
- if (s->mac_reg[TDH] == tdh_start) {
|
|
||||||
+ if (s->mac_reg[TDH] == tdh_start ||
|
|
||||||
+ tdh_start >= s->mac_reg[TDLEN] / sizeof(desc)) {
|
|
||||||
DBGOUT(TXERR, "TDH wraparound @%x, TDT %x, TDLEN %x\n",
|
|
||||||
tdh_start, s->mac_reg[TDT], s->mac_reg[TDLEN]);
|
|
||||||
break;
|
|
||||||
@@ -1166,7 +1167,8 @@ e1000_receive_iov(NetClientState *nc, const struct iovec *iov, int iovcnt)
|
|
||||||
if (++s->mac_reg[RDH] * sizeof(desc) >= s->mac_reg[RDLEN])
|
|
||||||
s->mac_reg[RDH] = 0;
|
|
||||||
/* see comment in start_xmit; same here */
|
|
||||||
- if (s->mac_reg[RDH] == rdh_start) {
|
|
||||||
+ if (s->mac_reg[RDH] == rdh_start ||
|
|
||||||
+ rdh_start >= s->mac_reg[RDLEN] / sizeof(desc)) {
|
|
||||||
DBGOUT(RXERR, "RDH wraparound @%x, RDT %x, RDLEN %x\n",
|
|
||||||
rdh_start, s->mac_reg[RDT], s->mac_reg[RDLEN]);
|
|
||||||
set_ics(s, 0, E1000_ICS_RXO);
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
|||||||
From 99b4cb71069f109b79b27bc629fc0cf0886dbc4b Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Snow <jsnow@redhat.com>
|
|
||||||
Date: Wed, 10 Feb 2016 13:29:40 -0500
|
|
||||||
Subject: [PATCH] ahci: Do not unmap NULL addresses
|
|
||||||
|
|
||||||
Definitely don't try to unmap a garbage address.
|
|
||||||
|
|
||||||
Reported-by: Zuozhi fzz <zuozhi.fzz@alibaba-inc.com>
|
|
||||||
Signed-off-by: John Snow <jsnow@redhat.com>
|
|
||||||
Message-id: 1454103689-13042-2-git-send-email-jsnow@redhat.com
|
|
||||||
---
|
|
||||||
hw/ide/ahci.c | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
|
|
||||||
index 7e87b18..3a95dad 100644
|
|
||||||
--- a/hw/ide/ahci.c
|
|
||||||
+++ b/hw/ide/ahci.c
|
|
||||||
@@ -662,6 +662,10 @@ static bool ahci_map_fis_address(AHCIDevice *ad)
|
|
||||||
|
|
||||||
static void ahci_unmap_fis_address(AHCIDevice *ad)
|
|
||||||
{
|
|
||||||
+ if (ad->res_fis == NULL) {
|
|
||||||
+ DPRINTF(ad->port_no, "Attempt to unmap NULL FIS address\n");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
dma_memory_unmap(ad->hba->as, ad->res_fis, 256,
|
|
||||||
DMA_DIRECTION_FROM_DEVICE, 256);
|
|
||||||
ad->res_fis = NULL;
|
|
||||||
@@ -678,6 +682,10 @@ static bool ahci_map_clb_address(AHCIDevice *ad)
|
|
||||||
|
|
||||||
static void ahci_unmap_clb_address(AHCIDevice *ad)
|
|
||||||
{
|
|
||||||
+ if (ad->lst == NULL) {
|
|
||||||
+ DPRINTF(ad->port_no, "Attempt to unmap NULL CLB address\n");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
dma_memory_unmap(ad->hba->as, ad->lst, 1024,
|
|
||||||
DMA_DIRECTION_FROM_DEVICE, 1024);
|
|
||||||
ad->lst = NULL;
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
From dff0367cf66f489aa772320fa2937a8cac1ca30d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Fri, 29 Jan 2016 18:30:34 +0530
|
|
||||||
Subject: [PATCH] usb: ehci: add capability mmio write function
|
|
||||||
|
|
||||||
USB Ehci emulation supports host controller capability registers.
|
|
||||||
But its mmio '.write' function was missing, which lead to a null
|
|
||||||
pointer dereference issue. Add a do nothing 'ehci_caps_write'
|
|
||||||
definition to avoid it; Do nothing because capability registers
|
|
||||||
are Read Only(RO).
|
|
||||||
|
|
||||||
Reported-by: Zuozhi Fzz <zuozhi.fzz@alibaba-inc.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Message-id: 1454072434-16045-1-git-send-email-ppandit@redhat.com
|
|
||||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
---
|
|
||||||
hw/usb/hcd-ehci.c | 6 ++++++
|
|
||||||
1 file changed, 6 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
|
|
||||||
index 1b50601..0f95d0d 100644
|
|
||||||
--- a/hw/usb/hcd-ehci.c
|
|
||||||
+++ b/hw/usb/hcd-ehci.c
|
|
||||||
@@ -895,6 +895,11 @@ static uint64_t ehci_caps_read(void *ptr, hwaddr addr,
|
|
||||||
return s->caps[addr];
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void ehci_caps_write(void *ptr, hwaddr addr,
|
|
||||||
+ uint64_t val, unsigned size)
|
|
||||||
+{
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static uint64_t ehci_opreg_read(void *ptr, hwaddr addr,
|
|
||||||
unsigned size)
|
|
||||||
{
|
|
||||||
@@ -2315,6 +2320,7 @@ static void ehci_frame_timer(void *opaque)
|
|
||||||
|
|
||||||
static const MemoryRegionOps ehci_mmio_caps_ops = {
|
|
||||||
.read = ehci_caps_read,
|
|
||||||
+ .write = ehci_caps_write,
|
|
||||||
.valid.min_access_size = 1,
|
|
||||||
.valid.max_access_size = 4,
|
|
||||||
.impl.min_access_size = 1,
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
From 80eecda8e5d09c442c24307f340840a5b70ea3b9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Thu, 11 Feb 2016 16:31:20 +0530
|
|
||||||
Subject: [PATCH] usb: check USB configuration descriptor object
|
|
||||||
|
|
||||||
When processing remote NDIS control message packets, the USB Net
|
|
||||||
device emulator checks to see if the USB configuration descriptor
|
|
||||||
object is of RNDIS type(2). But it does not check if it is null,
|
|
||||||
which leads to a null dereference error. Add check to avoid it.
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Message-id: 1455188480-14688-1-git-send-email-ppandit@redhat.com
|
|
||||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
---
|
|
||||||
hw/usb/dev-network.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c
|
|
||||||
index 985a629..5dc4538 100644
|
|
||||||
--- a/hw/usb/dev-network.c
|
|
||||||
+++ b/hw/usb/dev-network.c
|
|
||||||
@@ -654,7 +654,8 @@ typedef struct USBNetState {
|
|
||||||
|
|
||||||
static int is_rndis(USBNetState *s)
|
|
||||||
{
|
|
||||||
- return s->dev.config->bConfigurationValue == DEV_RNDIS_CONFIG_VALUE;
|
|
||||||
+ return s->dev.config ?
|
|
||||||
+ s->dev.config->bConfigurationValue == DEV_RNDIS_CONFIG_VALUE : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ndis_query(USBNetState *s, uint32_t oid,
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
|||||||
From 415ab35a441eca767d033a2702223e785b9d5190 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Wed, 24 Feb 2016 11:41:33 +0530
|
|
||||||
Subject: [PATCH] net: ne2000: check ring buffer control registers
|
|
||||||
|
|
||||||
Ne2000 NIC uses ring buffer of NE2000_MEM_SIZE(49152)
|
|
||||||
bytes to process network packets. Registers PSTART & PSTOP
|
|
||||||
define ring buffer size & location. Setting these registers
|
|
||||||
to invalid values could lead to infinite loop or OOB r/w
|
|
||||||
access issues. Add check to avoid it.
|
|
||||||
|
|
||||||
Reported-by: Yang Hongke <yanghongke@huawei.com>
|
|
||||||
Tested-by: Yang Hongke <yanghongke@huawei.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
|
||||||
---
|
|
||||||
hw/net/ne2000.c | 4 ++++
|
|
||||||
1 file changed, 4 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/hw/net/ne2000.c b/hw/net/ne2000.c
|
|
||||||
index e408083..f0feaf9 100644
|
|
||||||
--- a/hw/net/ne2000.c
|
|
||||||
+++ b/hw/net/ne2000.c
|
|
||||||
@@ -155,6 +155,10 @@ static int ne2000_buffer_full(NE2000State *s)
|
|
||||||
{
|
|
||||||
int avail, index, boundary;
|
|
||||||
|
|
||||||
+ if (s->stop <= s->start) {
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
index = s->curpag << 8;
|
|
||||||
boundary = s->boundary << 8;
|
|
||||||
if (index < boundary)
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,98 +0,0 @@
|
|||||||
From 3c52ddcdc548e7fbe65112d8a7bdc9cd105b4750 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ladi Prosek <lprosek@redhat.com>
|
|
||||||
Date: Thu, 3 Mar 2016 09:37:15 +0100
|
|
||||||
Subject: [PATCH] rng: remove the unused request cancellation code
|
|
||||||
|
|
||||||
rng_backend_cancel_requests had no callers and none of the code
|
|
||||||
deleted in this commit ever ran.
|
|
||||||
|
|
||||||
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
|
|
||||||
Reviewed-by: Amit Shah <amit.shah@redhat.com>
|
|
||||||
Message-Id: <1456994238-9585-2-git-send-email-lprosek@redhat.com>
|
|
||||||
Signed-off-by: Amit Shah <amit.shah@redhat.com>
|
|
||||||
---
|
|
||||||
backends/rng-egd.c | 12 ------------
|
|
||||||
backends/rng.c | 9 ---------
|
|
||||||
include/sysemu/rng.h | 11 -----------
|
|
||||||
3 files changed, 32 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/backends/rng-egd.c b/backends/rng-egd.c
|
|
||||||
index 2de5cd5..0b2976a 100644
|
|
||||||
--- a/backends/rng-egd.c
|
|
||||||
+++ b/backends/rng-egd.c
|
|
||||||
@@ -125,17 +125,6 @@ static void rng_egd_free_requests(RngEgd *s)
|
|
||||||
s->requests = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void rng_egd_cancel_requests(RngBackend *b)
|
|
||||||
-{
|
|
||||||
- RngEgd *s = RNG_EGD(b);
|
|
||||||
-
|
|
||||||
- /* We simply delete the list of pending requests. If there is data in the
|
|
||||||
- * queue waiting to be read, this is okay, because there will always be
|
|
||||||
- * more data than we requested originally
|
|
||||||
- */
|
|
||||||
- rng_egd_free_requests(s);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static void rng_egd_opened(RngBackend *b, Error **errp)
|
|
||||||
{
|
|
||||||
RngEgd *s = RNG_EGD(b);
|
|
||||||
@@ -213,7 +202,6 @@ static void rng_egd_class_init(ObjectClass *klass, void *data)
|
|
||||||
RngBackendClass *rbc = RNG_BACKEND_CLASS(klass);
|
|
||||||
|
|
||||||
rbc->request_entropy = rng_egd_request_entropy;
|
|
||||||
- rbc->cancel_requests = rng_egd_cancel_requests;
|
|
||||||
rbc->opened = rng_egd_opened;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/backends/rng.c b/backends/rng.c
|
|
||||||
index b7820ef..2f2f3ee 100644
|
|
||||||
--- a/backends/rng.c
|
|
||||||
+++ b/backends/rng.c
|
|
||||||
@@ -26,15 +26,6 @@ void rng_backend_request_entropy(RngBackend *s, size_t size,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-void rng_backend_cancel_requests(RngBackend *s)
|
|
||||||
-{
|
|
||||||
- RngBackendClass *k = RNG_BACKEND_GET_CLASS(s);
|
|
||||||
-
|
|
||||||
- if (k->cancel_requests) {
|
|
||||||
- k->cancel_requests(s);
|
|
||||||
- }
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static bool rng_backend_prop_get_opened(Object *obj, Error **errp)
|
|
||||||
{
|
|
||||||
RngBackend *s = RNG_BACKEND(obj);
|
|
||||||
diff --git a/include/sysemu/rng.h b/include/sysemu/rng.h
|
|
||||||
index 858be8c..87b3ebe 100644
|
|
||||||
--- a/include/sysemu/rng.h
|
|
||||||
+++ b/include/sysemu/rng.h
|
|
||||||
@@ -37,7 +37,6 @@ struct RngBackendClass
|
|
||||||
|
|
||||||
void (*request_entropy)(RngBackend *s, size_t size,
|
|
||||||
EntropyReceiveFunc *receive_entropy, void *opaque);
|
|
||||||
- void (*cancel_requests)(RngBackend *s);
|
|
||||||
|
|
||||||
void (*opened)(RngBackend *s, Error **errp);
|
|
||||||
};
|
|
||||||
@@ -68,14 +67,4 @@ struct RngBackend
|
|
||||||
void rng_backend_request_entropy(RngBackend *s, size_t size,
|
|
||||||
EntropyReceiveFunc *receive_entropy,
|
|
||||||
void *opaque);
|
|
||||||
-
|
|
||||||
-/**
|
|
||||||
- * rng_backend_cancel_requests:
|
|
||||||
- * @s: the backend to cancel all pending requests in
|
|
||||||
- *
|
|
||||||
- * Cancels all pending requests submitted by @rng_backend_request_entropy. This
|
|
||||||
- * should be used by a device during reset or in preparation for live migration
|
|
||||||
- * to stop tracking any request.
|
|
||||||
- */
|
|
||||||
-void rng_backend_cancel_requests(RngBackend *s);
|
|
||||||
#endif
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,135 +0,0 @@
|
|||||||
From 74074e8a7c60592cf1cc6469dbc2550d24aeded3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ladi Prosek <lprosek@redhat.com>
|
|
||||||
Date: Thu, 3 Mar 2016 09:37:16 +0100
|
|
||||||
Subject: [PATCH] rng: move request queue from RngEgd to RngBackend
|
|
||||||
|
|
||||||
The 'requests' field now lives in the RngBackend parent class.
|
|
||||||
There are no functional changes in this commit.
|
|
||||||
|
|
||||||
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
|
|
||||||
Reviewed-by: Amit Shah <amit.shah@redhat.com>
|
|
||||||
Message-Id: <1456994238-9585-3-git-send-email-lprosek@redhat.com>
|
|
||||||
Signed-off-by: Amit Shah <amit.shah@redhat.com>
|
|
||||||
---
|
|
||||||
backends/rng-egd.c | 28 +++++++++-------------------
|
|
||||||
include/sysemu/rng.h | 11 +++++++++++
|
|
||||||
2 files changed, 20 insertions(+), 19 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/backends/rng-egd.c b/backends/rng-egd.c
|
|
||||||
index 0b2976a..b061362 100644
|
|
||||||
--- a/backends/rng-egd.c
|
|
||||||
+++ b/backends/rng-egd.c
|
|
||||||
@@ -25,19 +25,8 @@ typedef struct RngEgd
|
|
||||||
|
|
||||||
CharDriverState *chr;
|
|
||||||
char *chr_name;
|
|
||||||
-
|
|
||||||
- GSList *requests;
|
|
||||||
} RngEgd;
|
|
||||||
|
|
||||||
-typedef struct RngRequest
|
|
||||||
-{
|
|
||||||
- EntropyReceiveFunc *receive_entropy;
|
|
||||||
- uint8_t *data;
|
|
||||||
- void *opaque;
|
|
||||||
- size_t offset;
|
|
||||||
- size_t size;
|
|
||||||
-} RngRequest;
|
|
||||||
-
|
|
||||||
static void rng_egd_request_entropy(RngBackend *b, size_t size,
|
|
||||||
EntropyReceiveFunc *receive_entropy,
|
|
||||||
void *opaque)
|
|
||||||
@@ -66,7 +55,7 @@ static void rng_egd_request_entropy(RngBackend *b, size_t size,
|
|
||||||
size -= len;
|
|
||||||
}
|
|
||||||
|
|
||||||
- s->requests = g_slist_append(s->requests, req);
|
|
||||||
+ s->parent.requests = g_slist_append(s->parent.requests, req);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rng_egd_free_request(RngRequest *req)
|
|
||||||
@@ -81,7 +70,7 @@ static int rng_egd_chr_can_read(void *opaque)
|
|
||||||
GSList *i;
|
|
||||||
int size = 0;
|
|
||||||
|
|
||||||
- for (i = s->requests; i; i = i->next) {
|
|
||||||
+ for (i = s->parent.requests; i; i = i->next) {
|
|
||||||
RngRequest *req = i->data;
|
|
||||||
size += req->size - req->offset;
|
|
||||||
}
|
|
||||||
@@ -94,8 +83,8 @@ static void rng_egd_chr_read(void *opaque, const uint8_t *buf, int size)
|
|
||||||
RngEgd *s = RNG_EGD(opaque);
|
|
||||||
size_t buf_offset = 0;
|
|
||||||
|
|
||||||
- while (size > 0 && s->requests) {
|
|
||||||
- RngRequest *req = s->requests->data;
|
|
||||||
+ while (size > 0 && s->parent.requests) {
|
|
||||||
+ RngRequest *req = s->parent.requests->data;
|
|
||||||
int len = MIN(size, req->size - req->offset);
|
|
||||||
|
|
||||||
memcpy(req->data + req->offset, buf + buf_offset, len);
|
|
||||||
@@ -104,7 +93,8 @@ static void rng_egd_chr_read(void *opaque, const uint8_t *buf, int size)
|
|
||||||
size -= len;
|
|
||||||
|
|
||||||
if (req->offset == req->size) {
|
|
||||||
- s->requests = g_slist_remove_link(s->requests, s->requests);
|
|
||||||
+ s->parent.requests = g_slist_remove_link(s->parent.requests,
|
|
||||||
+ s->parent.requests);
|
|
||||||
|
|
||||||
req->receive_entropy(req->opaque, req->data, req->size);
|
|
||||||
|
|
||||||
@@ -117,12 +107,12 @@ static void rng_egd_free_requests(RngEgd *s)
|
|
||||||
{
|
|
||||||
GSList *i;
|
|
||||||
|
|
||||||
- for (i = s->requests; i; i = i->next) {
|
|
||||||
+ for (i = s->parent.requests; i; i = i->next) {
|
|
||||||
rng_egd_free_request(i->data);
|
|
||||||
}
|
|
||||||
|
|
||||||
- g_slist_free(s->requests);
|
|
||||||
- s->requests = NULL;
|
|
||||||
+ g_slist_free(s->parent.requests);
|
|
||||||
+ s->parent.requests = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rng_egd_opened(RngBackend *b, Error **errp)
|
|
||||||
diff --git a/include/sysemu/rng.h b/include/sysemu/rng.h
|
|
||||||
index 87b3ebe..c744d82 100644
|
|
||||||
--- a/include/sysemu/rng.h
|
|
||||||
+++ b/include/sysemu/rng.h
|
|
||||||
@@ -24,6 +24,7 @@
|
|
||||||
#define RNG_BACKEND_CLASS(klass) \
|
|
||||||
OBJECT_CLASS_CHECK(RngBackendClass, (klass), TYPE_RNG_BACKEND)
|
|
||||||
|
|
||||||
+typedef struct RngRequest RngRequest;
|
|
||||||
typedef struct RngBackendClass RngBackendClass;
|
|
||||||
typedef struct RngBackend RngBackend;
|
|
||||||
|
|
||||||
@@ -31,6 +32,15 @@ typedef void (EntropyReceiveFunc)(void *opaque,
|
|
||||||
const void *data,
|
|
||||||
size_t size);
|
|
||||||
|
|
||||||
+struct RngRequest
|
|
||||||
+{
|
|
||||||
+ EntropyReceiveFunc *receive_entropy;
|
|
||||||
+ uint8_t *data;
|
|
||||||
+ void *opaque;
|
|
||||||
+ size_t offset;
|
|
||||||
+ size_t size;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
struct RngBackendClass
|
|
||||||
{
|
|
||||||
ObjectClass parent_class;
|
|
||||||
@@ -47,6 +57,7 @@ struct RngBackend
|
|
||||||
|
|
||||||
/*< protected >*/
|
|
||||||
bool opened;
|
|
||||||
+ GSList *requests;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,155 +0,0 @@
|
|||||||
From 9f14b0add1dcdbfa2ee61051d068211fb0a1fcc9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ladi Prosek <lprosek@redhat.com>
|
|
||||||
Date: Thu, 3 Mar 2016 09:37:17 +0100
|
|
||||||
Subject: [PATCH] rng: move request queue cleanup from RngEgd to RngBackend
|
|
||||||
|
|
||||||
RngBackend is now in charge of cleaning up the linked list on
|
|
||||||
instance finalization. It also exposes a function to finalize
|
|
||||||
individual RngRequest instances, called by its child classes.
|
|
||||||
|
|
||||||
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
|
|
||||||
Reviewed-by: Amit Shah <amit.shah@redhat.com>
|
|
||||||
Message-Id: <1456994238-9585-4-git-send-email-lprosek@redhat.com>
|
|
||||||
Signed-off-by: Amit Shah <amit.shah@redhat.com>
|
|
||||||
---
|
|
||||||
backends/rng-egd.c | 25 +------------------------
|
|
||||||
backends/rng.c | 32 ++++++++++++++++++++++++++++++++
|
|
||||||
include/sysemu/rng.h | 12 ++++++++++++
|
|
||||||
3 files changed, 45 insertions(+), 24 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/backends/rng-egd.c b/backends/rng-egd.c
|
|
||||||
index b061362..8f2bd16 100644
|
|
||||||
--- a/backends/rng-egd.c
|
|
||||||
+++ b/backends/rng-egd.c
|
|
||||||
@@ -58,12 +58,6 @@ static void rng_egd_request_entropy(RngBackend *b, size_t size,
|
|
||||||
s->parent.requests = g_slist_append(s->parent.requests, req);
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void rng_egd_free_request(RngRequest *req)
|
|
||||||
-{
|
|
||||||
- g_free(req->data);
|
|
||||||
- g_free(req);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static int rng_egd_chr_can_read(void *opaque)
|
|
||||||
{
|
|
||||||
RngEgd *s = RNG_EGD(opaque);
|
|
||||||
@@ -93,28 +87,13 @@ static void rng_egd_chr_read(void *opaque, const uint8_t *buf, int size)
|
|
||||||
size -= len;
|
|
||||||
|
|
||||||
if (req->offset == req->size) {
|
|
||||||
- s->parent.requests = g_slist_remove_link(s->parent.requests,
|
|
||||||
- s->parent.requests);
|
|
||||||
-
|
|
||||||
req->receive_entropy(req->opaque, req->data, req->size);
|
|
||||||
|
|
||||||
- rng_egd_free_request(req);
|
|
||||||
+ rng_backend_finalize_request(&s->parent, req);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void rng_egd_free_requests(RngEgd *s)
|
|
||||||
-{
|
|
||||||
- GSList *i;
|
|
||||||
-
|
|
||||||
- for (i = s->parent.requests; i; i = i->next) {
|
|
||||||
- rng_egd_free_request(i->data);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- g_slist_free(s->parent.requests);
|
|
||||||
- s->parent.requests = NULL;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static void rng_egd_opened(RngBackend *b, Error **errp)
|
|
||||||
{
|
|
||||||
RngEgd *s = RNG_EGD(b);
|
|
||||||
@@ -183,8 +162,6 @@ static void rng_egd_finalize(Object *obj)
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free(s->chr_name);
|
|
||||||
-
|
|
||||||
- rng_egd_free_requests(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rng_egd_class_init(ObjectClass *klass, void *data)
|
|
||||||
diff --git a/backends/rng.c b/backends/rng.c
|
|
||||||
index 2f2f3ee..014cb9d 100644
|
|
||||||
--- a/backends/rng.c
|
|
||||||
+++ b/backends/rng.c
|
|
||||||
@@ -64,6 +64,30 @@ static void rng_backend_prop_set_opened(Object *obj, bool value, Error **errp)
|
|
||||||
s->opened = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void rng_backend_free_request(RngRequest *req)
|
|
||||||
+{
|
|
||||||
+ g_free(req->data);
|
|
||||||
+ g_free(req);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void rng_backend_free_requests(RngBackend *s)
|
|
||||||
+{
|
|
||||||
+ GSList *i;
|
|
||||||
+
|
|
||||||
+ for (i = s->requests; i; i = i->next) {
|
|
||||||
+ rng_backend_free_request(i->data);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_slist_free(s->requests);
|
|
||||||
+ s->requests = NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void rng_backend_finalize_request(RngBackend *s, RngRequest *req)
|
|
||||||
+{
|
|
||||||
+ s->requests = g_slist_remove(s->requests, req);
|
|
||||||
+ rng_backend_free_request(req);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void rng_backend_init(Object *obj)
|
|
||||||
{
|
|
||||||
object_property_add_bool(obj, "opened",
|
|
||||||
@@ -72,6 +96,13 @@ static void rng_backend_init(Object *obj)
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void rng_backend_finalize(Object *obj)
|
|
||||||
+{
|
|
||||||
+ RngBackend *s = RNG_BACKEND(obj);
|
|
||||||
+
|
|
||||||
+ rng_backend_free_requests(s);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void rng_backend_class_init(ObjectClass *oc, void *data)
|
|
||||||
{
|
|
||||||
UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
|
|
||||||
@@ -84,6 +115,7 @@ static const TypeInfo rng_backend_info = {
|
|
||||||
.parent = TYPE_OBJECT,
|
|
||||||
.instance_size = sizeof(RngBackend),
|
|
||||||
.instance_init = rng_backend_init,
|
|
||||||
+ .instance_finalize = rng_backend_finalize,
|
|
||||||
.class_size = sizeof(RngBackendClass),
|
|
||||||
.class_init = rng_backend_class_init,
|
|
||||||
.abstract = true,
|
|
||||||
diff --git a/include/sysemu/rng.h b/include/sysemu/rng.h
|
|
||||||
index c744d82..08a2eda 100644
|
|
||||||
--- a/include/sysemu/rng.h
|
|
||||||
+++ b/include/sysemu/rng.h
|
|
||||||
@@ -78,4 +79,15 @@ struct RngBackend
|
|
||||||
void rng_backend_request_entropy(RngBackend *s, size_t size,
|
|
||||||
EntropyReceiveFunc *receive_entropy,
|
|
||||||
void *opaque);
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * rng_backend_free_request:
|
|
||||||
+ * @s: the backend that created the request
|
|
||||||
+ * @req: the request to finalize
|
|
||||||
+ *
|
|
||||||
+ * Used by child rng backend classes to finalize requests once they've been
|
|
||||||
+ * processed. The request is removed from the list of active requests and
|
|
||||||
+ * deleted.
|
|
||||||
+ */
|
|
||||||
+void rng_backend_finalize_request(RngBackend *s, RngRequest *req);
|
|
||||||
#endif
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,179 +0,0 @@
|
|||||||
From 60253ed1e6ec6d8e5ef2efe7bf755f475dce9956 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ladi Prosek <lprosek@redhat.com>
|
|
||||||
Date: Thu, 3 Mar 2016 09:37:18 +0100
|
|
||||||
Subject: [PATCH] rng: add request queue support to rng-random
|
|
||||||
|
|
||||||
Requests are now created in the RngBackend parent class and the
|
|
||||||
code path is shared by both rng-egd and rng-random.
|
|
||||||
|
|
||||||
This commit fixes the rng-random implementation which processed
|
|
||||||
only one request at a time and simply discarded all but the most
|
|
||||||
recent one. In the guest this manifested as delayed completion
|
|
||||||
of reads from virtio-rng, i.e. a read was completed only after
|
|
||||||
another read was issued.
|
|
||||||
|
|
||||||
By switching rng-random to use the same request queue as rng-egd,
|
|
||||||
the unsafe stack-based allocation of the entropy buffer is
|
|
||||||
eliminated and replaced with g_malloc.
|
|
||||||
|
|
||||||
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
|
|
||||||
Reviewed-by: Amit Shah <amit.shah@redhat.com>
|
|
||||||
Message-Id: <1456994238-9585-5-git-send-email-lprosek@redhat.com>
|
|
||||||
Signed-off-by: Amit Shah <amit.shah@redhat.com>
|
|
||||||
---
|
|
||||||
backends/rng-egd.c | 16 ++--------------
|
|
||||||
backends/rng-random.c | 43 +++++++++++++++++++------------------------
|
|
||||||
backends/rng.c | 13 ++++++++++++-
|
|
||||||
include/sysemu/rng.h | 3 +--
|
|
||||||
4 files changed, 34 insertions(+), 41 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/backends/rng-egd.c b/backends/rng-egd.c
|
|
||||||
index 8f2bd16..30332ed 100644
|
|
||||||
--- a/backends/rng-egd.c
|
|
||||||
+++ b/backends/rng-egd.c
|
|
||||||
@@ -27,20 +27,10 @@ typedef struct RngEgd
|
|
||||||
char *chr_name;
|
|
||||||
} RngEgd;
|
|
||||||
|
|
||||||
-static void rng_egd_request_entropy(RngBackend *b, size_t size,
|
|
||||||
- EntropyReceiveFunc *receive_entropy,
|
|
||||||
- void *opaque)
|
|
||||||
+static void rng_egd_request_entropy(RngBackend *b, RngRequest *req)
|
|
||||||
{
|
|
||||||
RngEgd *s = RNG_EGD(b);
|
|
||||||
- RngRequest *req;
|
|
||||||
-
|
|
||||||
- req = g_malloc(sizeof(*req));
|
|
||||||
-
|
|
||||||
- req->offset = 0;
|
|
||||||
- req->size = size;
|
|
||||||
- req->receive_entropy = receive_entropy;
|
|
||||||
- req->opaque = opaque;
|
|
||||||
- req->data = g_malloc(req->size);
|
|
||||||
+ size_t size = req->size;
|
|
||||||
|
|
||||||
while (size > 0) {
|
|
||||||
uint8_t header[2];
|
|
||||||
@@ -54,8 +44,6 @@ static void rng_egd_request_entropy(RngBackend *b, size_t size,
|
|
||||||
|
|
||||||
size -= len;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- s->parent.requests = g_slist_append(s->parent.requests, req);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int rng_egd_chr_can_read(void *opaque)
|
|
||||||
diff --git a/backends/rng-random.c b/backends/rng-random.c
|
|
||||||
index 8cdad6a..a6cb385 100644
|
|
||||||
--- a/backends/rng-random.c
|
|
||||||
+++ b/backends/rng-random.c
|
|
||||||
@@ -22,10 +22,6 @@ struct RndRandom
|
|
||||||
|
|
||||||
int fd;
|
|
||||||
char *filename;
|
|
||||||
-
|
|
||||||
- EntropyReceiveFunc *receive_func;
|
|
||||||
- void *opaque;
|
|
||||||
- size_t size;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -38,36 +34,35 @@ struct RndRandom
|
|
||||||
static void entropy_available(void *opaque)
|
|
||||||
{
|
|
||||||
RndRandom *s = RNG_RANDOM(opaque);
|
|
||||||
- uint8_t buffer[s->size];
|
|
||||||
- ssize_t len;
|
|
||||||
|
|
||||||
- len = read(s->fd, buffer, s->size);
|
|
||||||
- if (len < 0 && errno == EAGAIN) {
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
- g_assert(len != -1);
|
|
||||||
+ while (s->parent.requests != NULL) {
|
|
||||||
+ RngRequest *req = s->parent.requests->data;
|
|
||||||
+ ssize_t len;
|
|
||||||
+
|
|
||||||
+ len = read(s->fd, req->data, req->size);
|
|
||||||
+ if (len < 0 && errno == EAGAIN) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ g_assert(len != -1);
|
|
||||||
|
|
||||||
- s->receive_func(s->opaque, buffer, len);
|
|
||||||
- s->receive_func = NULL;
|
|
||||||
+ req->receive_entropy(req->opaque, req->data, len);
|
|
||||||
|
|
||||||
+ rng_backend_finalize_request(&s->parent, req);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* We've drained all requests, the fd handler can be reset. */
|
|
||||||
qemu_set_fd_handler(s->fd, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void rng_random_request_entropy(RngBackend *b, size_t size,
|
|
||||||
- EntropyReceiveFunc *receive_entropy,
|
|
||||||
- void *opaque)
|
|
||||||
+static void rng_random_request_entropy(RngBackend *b, RngRequest *req)
|
|
||||||
{
|
|
||||||
RndRandom *s = RNG_RANDOM(b);
|
|
||||||
|
|
||||||
- if (s->receive_func) {
|
|
||||||
- s->receive_func(s->opaque, NULL, 0);
|
|
||||||
+ if (s->parent.requests == NULL) {
|
|
||||||
+ /* If there are no pending requests yet, we need to
|
|
||||||
+ * install our fd handler. */
|
|
||||||
+ qemu_set_fd_handler(s->fd, entropy_available, NULL, s);
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- s->receive_func = receive_entropy;
|
|
||||||
- s->opaque = opaque;
|
|
||||||
- s->size = size;
|
|
||||||
-
|
|
||||||
- qemu_set_fd_handler(s->fd, entropy_available, NULL, s);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rng_random_opened(RngBackend *b, Error **errp)
|
|
||||||
diff --git a/backends/rng.c b/backends/rng.c
|
|
||||||
index 014cb9d..277a41b 100644
|
|
||||||
--- a/backends/rng.c
|
|
||||||
+++ b/backends/rng.c
|
|
||||||
@@ -20,9 +20,20 @@ void rng_backend_request_entropy(RngBackend *s, size_t size,
|
|
||||||
void *opaque)
|
|
||||||
{
|
|
||||||
RngBackendClass *k = RNG_BACKEND_GET_CLASS(s);
|
|
||||||
+ RngRequest *req;
|
|
||||||
|
|
||||||
if (k->request_entropy) {
|
|
||||||
- k->request_entropy(s, size, receive_entropy, opaque);
|
|
||||||
+ req = g_malloc(sizeof(*req));
|
|
||||||
+
|
|
||||||
+ req->offset = 0;
|
|
||||||
+ req->size = size;
|
|
||||||
+ req->receive_entropy = receive_entropy;
|
|
||||||
+ req->opaque = opaque;
|
|
||||||
+ req->data = g_malloc(req->size);
|
|
||||||
+
|
|
||||||
+ k->request_entropy(s, req);
|
|
||||||
+
|
|
||||||
+ s->requests = g_slist_append(s->requests, req);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/include/sysemu/rng.h b/include/sysemu/rng.h
|
|
||||||
index 08a2eda..4fffd68 100644
|
|
||||||
--- a/include/sysemu/rng.h
|
|
||||||
+++ b/include/sysemu/rng.h
|
|
||||||
@@ -45,8 +45,7 @@ struct RngBackendClass
|
|
||||||
{
|
|
||||||
ObjectClass parent_class;
|
|
||||||
|
|
||||||
- void (*request_entropy)(RngBackend *s, size_t size,
|
|
||||||
- EntropyReceiveFunc *receive_entropy, void *opaque);
|
|
||||||
+ void (*request_entropy)(RngBackend *s, RngRequest *req);
|
|
||||||
|
|
||||||
void (*opened)(RngBackend *s, Error **errp);
|
|
||||||
};
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
|||||||
From 49d925ce50383a286278143c05511d30ec41a36e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Wed, 20 Jan 2016 01:26:46 +0530
|
|
||||||
Subject: [PATCH] usb: check page select value while processing iTD
|
|
||||||
|
|
||||||
While processing isochronous transfer descriptors(iTD), the page
|
|
||||||
select(PG) field value could lead to an OOB read access. Add
|
|
||||||
check to avoid it.
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Message-id: 1453233406-12165-1-git-send-email-ppandit@redhat.com
|
|
||||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
---
|
|
||||||
hw/usb/hcd-ehci.c | 10 ++++++----
|
|
||||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
|
|
||||||
index ab00268..93601d9 100644
|
|
||||||
--- a/hw/usb/hcd-ehci.c
|
|
||||||
+++ b/hw/usb/hcd-ehci.c
|
|
||||||
@@ -1405,21 +1405,23 @@ static int ehci_process_itd(EHCIState *ehci,
|
|
||||||
if (itd->transact[i] & ITD_XACT_ACTIVE) {
|
|
||||||
pg = get_field(itd->transact[i], ITD_XACT_PGSEL);
|
|
||||||
off = itd->transact[i] & ITD_XACT_OFFSET_MASK;
|
|
||||||
- ptr1 = (itd->bufptr[pg] & ITD_BUFPTR_MASK);
|
|
||||||
- ptr2 = (itd->bufptr[pg+1] & ITD_BUFPTR_MASK);
|
|
||||||
len = get_field(itd->transact[i], ITD_XACT_LENGTH);
|
|
||||||
|
|
||||||
if (len > max * mult) {
|
|
||||||
len = max * mult;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- if (len > BUFF_SIZE) {
|
|
||||||
+ if (len > BUFF_SIZE || pg > 6) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ ptr1 = (itd->bufptr[pg] & ITD_BUFPTR_MASK);
|
|
||||||
qemu_sglist_init(&ehci->isgl, ehci->device, 2, ehci->as);
|
|
||||||
if (off + len > 4096) {
|
|
||||||
/* transfer crosses page border */
|
|
||||||
+ if (pg == 6) {
|
|
||||||
+ return -1; /* avoid page pg + 1 */
|
|
||||||
+ }
|
|
||||||
+ ptr2 = (itd->bufptr[pg + 1] & ITD_BUFPTR_MASK);
|
|
||||||
uint32_t len2 = off + len - 4096;
|
|
||||||
uint32_t len1 = len - len2;
|
|
||||||
qemu_sglist_add(&ehci->isgl, ptr1 + off, len1);
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
|||||||
From fe3c546c5ff2a6210f9a4d8561cc64051ca8603e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Wed, 17 Feb 2016 00:23:41 +0530
|
|
||||||
Subject: [PATCH] usb: check RNDIS buffer offsets & length
|
|
||||||
|
|
||||||
When processing remote NDIS control message packets,
|
|
||||||
the USB Net device emulator uses a fixed length(4096) data buffer.
|
|
||||||
The incoming informationBufferOffset & Length combination could
|
|
||||||
overflow and cross that range. Check control message buffer
|
|
||||||
offsets and length to avoid it.
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Message-id: 1455648821-17340-3-git-send-email-ppandit@redhat.com
|
|
||||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
---
|
|
||||||
hw/usb/dev-network.c | 9 ++++++---
|
|
||||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c
|
|
||||||
index 5dc4538..c6abd38 100644
|
|
||||||
--- a/hw/usb/dev-network.c
|
|
||||||
+++ b/hw/usb/dev-network.c
|
|
||||||
@@ -916,8 +916,9 @@ static int rndis_query_response(USBNetState *s,
|
|
||||||
|
|
||||||
bufoffs = le32_to_cpu(buf->InformationBufferOffset) + 8;
|
|
||||||
buflen = le32_to_cpu(buf->InformationBufferLength);
|
|
||||||
- if (bufoffs + buflen > length)
|
|
||||||
+ if (buflen > length || bufoffs >= length || bufoffs + buflen > length) {
|
|
||||||
return USB_RET_STALL;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
infobuflen = ndis_query(s, le32_to_cpu(buf->OID),
|
|
||||||
bufoffs + (uint8_t *) buf, buflen, infobuf,
|
|
||||||
@@ -962,8 +963,9 @@ static int rndis_set_response(USBNetState *s,
|
|
||||||
|
|
||||||
bufoffs = le32_to_cpu(buf->InformationBufferOffset) + 8;
|
|
||||||
buflen = le32_to_cpu(buf->InformationBufferLength);
|
|
||||||
- if (bufoffs + buflen > length)
|
|
||||||
+ if (buflen > length || bufoffs >= length || bufoffs + buflen > length) {
|
|
||||||
return USB_RET_STALL;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
ret = ndis_set(s, le32_to_cpu(buf->OID),
|
|
||||||
bufoffs + (uint8_t *) buf, buflen);
|
|
||||||
@@ -1213,8 +1215,9 @@ static void usb_net_handle_dataout(USBNetState *s, USBPacket *p)
|
|
||||||
if (le32_to_cpu(msg->MessageType) == RNDIS_PACKET_MSG) {
|
|
||||||
uint32_t offs = 8 + le32_to_cpu(msg->DataOffset);
|
|
||||||
uint32_t size = le32_to_cpu(msg->DataLength);
|
|
||||||
- if (offs + size <= len)
|
|
||||||
+ if (offs < len && size < len && offs + size <= len) {
|
|
||||||
qemu_send_packet(qemu_get_queue(s->nic), s->out_buf + offs, size);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
s->out_ptr -= len;
|
|
||||||
memmove(s->out_buf, &s->out_buf[len], s->out_ptr);
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,107 +0,0 @@
|
|||||||
https://bugs.gentoo.org/580426
|
|
||||||
https://bugs.gentoo.org/568246
|
|
||||||
|
|
||||||
From a49923d2837d20510d645d3758f1ad87c32d0730 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
Date: Mon, 18 Apr 2016 09:20:54 +0200
|
|
||||||
Subject: [PATCH] Revert "ehci: make idt processing more robust"
|
|
||||||
|
|
||||||
This reverts commit 156a2e4dbffa85997636a7a39ef12da6f1b40254.
|
|
||||||
|
|
||||||
Breaks FreeBSD.
|
|
||||||
|
|
||||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
---
|
|
||||||
hw/usb/hcd-ehci.c | 5 ++---
|
|
||||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
|
|
||||||
index d5c0e1c..43a8f7a 100644
|
|
||||||
--- a/hw/usb/hcd-ehci.c
|
|
||||||
+++ b/hw/usb/hcd-ehci.c
|
|
||||||
@@ -1397,7 +1397,7 @@ static int ehci_process_itd(EHCIState *ehci,
|
|
||||||
{
|
|
||||||
USBDevice *dev;
|
|
||||||
USBEndpoint *ep;
|
|
||||||
- uint32_t i, len, pid, dir, devaddr, endp, xfers = 0;
|
|
||||||
+ uint32_t i, len, pid, dir, devaddr, endp;
|
|
||||||
uint32_t pg, off, ptr1, ptr2, max, mult;
|
|
||||||
|
|
||||||
ehci->periodic_sched_active = PERIODIC_ACTIVE;
|
|
||||||
@@ -1489,10 +1489,9 @@ static int ehci_process_itd(EHCIState *ehci,
|
|
||||||
ehci_raise_irq(ehci, USBSTS_INT);
|
|
||||||
}
|
|
||||||
itd->transact[i] &= ~ITD_XACT_ACTIVE;
|
|
||||||
- xfers++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- return xfers ? 0 : -1;
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
||||||
From 1ae3f2f178087711f9591350abad133525ba93f2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
Date: Mon, 18 Apr 2016 09:11:38 +0200
|
|
||||||
Subject: [PATCH] ehci: apply limit to iTD/sidt descriptors
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Commit "156a2e4 ehci: make idt processing more robust" tries to avoid a
|
|
||||||
DoS by the guest (create a circular iTD queue and let qemu ehci
|
|
||||||
emulation run in circles forever). Unfortunately this has two problems:
|
|
||||||
First it misses the case of siTDs, and second it reportedly breaks
|
|
||||||
FreeBSD.
|
|
||||||
|
|
||||||
So lets go for a different approach: just count the number of iTDs and
|
|
||||||
siTDs we have seen per frame and apply a limit. That should really
|
|
||||||
catch all cases now.
|
|
||||||
|
|
||||||
Reported-by: 杜少博 <dushaobo@360.cn>
|
|
||||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
---
|
|
||||||
hw/usb/hcd-ehci.c | 6 +++++-
|
|
||||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
|
|
||||||
index 159f58d..d5c0e1c 100644
|
|
||||||
--- a/hw/usb/hcd-ehci.c
|
|
||||||
+++ b/hw/usb/hcd-ehci.c
|
|
||||||
@@ -2011,6 +2011,7 @@ static int ehci_state_writeback(EHCIQueue *q)
|
|
||||||
static void ehci_advance_state(EHCIState *ehci, int async)
|
|
||||||
{
|
|
||||||
EHCIQueue *q = NULL;
|
|
||||||
+ int itd_count = 0;
|
|
||||||
int again;
|
|
||||||
|
|
||||||
do {
|
|
||||||
@@ -2035,10 +2036,12 @@ static void ehci_advance_state(EHCIState *ehci, int async)
|
|
||||||
|
|
||||||
case EST_FETCHITD:
|
|
||||||
again = ehci_state_fetchitd(ehci, async);
|
|
||||||
+ itd_count++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EST_FETCHSITD:
|
|
||||||
again = ehci_state_fetchsitd(ehci, async);
|
|
||||||
+ itd_count++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EST_ADVANCEQUEUE:
|
|
||||||
@@ -2087,7 +2090,8 @@ static void ehci_advance_state(EHCIState *ehci, int async)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (again < 0) {
|
|
||||||
+ if (again < 0 || itd_count > 16) {
|
|
||||||
+ /* TODO: notify guest (raise HSE irq?) */
|
|
||||||
fprintf(stderr, "processing error - resetting ehci HC\n");
|
|
||||||
ehci_reset(ehci);
|
|
||||||
again = 0;
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
|||||||
https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg01106.html
|
|
||||||
https://bugs.gentoo.org/580040
|
|
||||||
|
|
||||||
diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c
|
|
||||||
index c69f374..ff1e31a 100644
|
|
||||||
--- a/hw/i386/kvmvapic.c
|
|
||||||
+++ b/hw/i386/kvmvapic.c
|
|
||||||
@@ -394,7 +394,7 @@ static void patch_instruction(VAPICROMState *s, X86CPU *cpu, target_ulong ip)
|
|
||||||
CPUX86State *env = &cpu->env;
|
|
||||||
VAPICHandlers *handlers;
|
|
||||||
uint8_t opcode[2];
|
|
||||||
- uint32_t imm32;
|
|
||||||
+ uint32_t imm32 = 0;
|
|
||||||
target_ulong current_pc = 0;
|
|
||||||
target_ulong current_cs_base = 0;
|
|
||||||
int current_flags = 0;
|
|
@ -1,47 +0,0 @@
|
|||||||
From 3a15cc0e1ee7168db0782133d2607a6bfa422d66 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Fri, 8 Apr 2016 11:33:48 +0530
|
|
||||||
Subject: [PATCH] net: stellaris_enet: check packet length against receive
|
|
||||||
buffer
|
|
||||||
|
|
||||||
When receiving packets over Stellaris ethernet controller, it
|
|
||||||
uses receive buffer of size 2048 bytes. In case the controller
|
|
||||||
accepts large(MTU) packets, it could lead to memory corruption.
|
|
||||||
Add check to avoid it.
|
|
||||||
|
|
||||||
Reported-by: Oleksandr Bazhaniuk <oleksandr.bazhaniuk@intel.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Message-id: 1460095428-22698-1-git-send-email-ppandit@redhat.com
|
|
||||||
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
|
|
||||||
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
|
|
||||||
---
|
|
||||||
hw/net/stellaris_enet.c | 12 +++++++++++-
|
|
||||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/hw/net/stellaris_enet.c b/hw/net/stellaris_enet.c
|
|
||||||
index 84cf60b..6880894 100644
|
|
||||||
--- a/hw/net/stellaris_enet.c
|
|
||||||
+++ b/hw/net/stellaris_enet.c
|
|
||||||
@@ -236,8 +236,18 @@ static ssize_t stellaris_enet_receive(NetClientState *nc, const uint8_t *buf, si
|
|
||||||
n = s->next_packet + s->np;
|
|
||||||
if (n >= 31)
|
|
||||||
n -= 31;
|
|
||||||
- s->np++;
|
|
||||||
|
|
||||||
+ if (size >= sizeof(s->rx[n].data) - 6) {
|
|
||||||
+ /* If the packet won't fit into the
|
|
||||||
+ * emulated 2K RAM, this is reported
|
|
||||||
+ * as a FIFO overrun error.
|
|
||||||
+ */
|
|
||||||
+ s->ris |= SE_INT_FOV;
|
|
||||||
+ stellaris_enet_update(s);
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ s->np++;
|
|
||||||
s->rx[n].len = size + 6;
|
|
||||||
p = s->rx[n].data;
|
|
||||||
*(p++) = (size + 6);
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
|||||||
https://bugs.gentoo.org/577810
|
|
||||||
|
|
||||||
From 277abf15a60f7653bfb05ffb513ed74ffdaea1b7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jan Vesely <jano.vesely@gmail.com>
|
|
||||||
Date: Fri, 29 Apr 2016 13:15:23 -0400
|
|
||||||
Subject: [PATCH] configure: Check if struct fsxattr is available from linux
|
|
||||||
header
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Fixes build failure with --enable-xfsctl and
|
|
||||||
new linux headers (>=4.5) and older xfsprogs(<4.5):
|
|
||||||
In file included from /usr/include/xfs/xfs.h:38:0,
|
|
||||||
from /var/tmp/portage/app-emulation/qemu-2.5.0-r1/work/qemu-2.5.0/block/raw-posix.c:97:
|
|
||||||
/usr/include/xfs/xfs_fs.h:42:8: error: redefinition of ‘struct fsxattr’
|
|
||||||
struct fsxattr {
|
|
||||||
^
|
|
||||||
In file included from /var/tmp/portage/app-emulation/qemu-2.5.0-r1/work/qemu-2.5.0/block/raw-posix.c:60:0:
|
|
||||||
/usr/include/linux/fs.h:155:8: note: originally defined here
|
|
||||||
struct fsxattr {
|
|
||||||
|
|
||||||
This is really a bug in the system headers, but we can work around it
|
|
||||||
by defining HAVE_FSXATTR in the QEMU headers if linux/fs.h provides
|
|
||||||
the struct, so that xfs_fs.h doesn't try to define it as well.
|
|
||||||
|
|
||||||
CC: qemu-trivial@nongnu.org
|
|
||||||
CC: Markus Armbruster <armbru@redhat.com>
|
|
||||||
CC: Peter Maydell <peter.maydell@linaro.org>
|
|
||||||
CC: Stefan Weil <sw@weilnetz.de>
|
|
||||||
Tested-by: Stefan Weil <sw@weilnetz.de>
|
|
||||||
Signed-off-by: Jan Vesely <jano.vesely@gmail.com>
|
|
||||||
[PMM: adjusted commit message, comments]
|
|
||||||
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
|
|
||||||
---
|
|
||||||
configure | 23 +++++++++++++++++++++++
|
|
||||||
1 file changed, 23 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/configure b/configure
|
|
||||||
index ab54f3c..c37fc5f 100755
|
|
||||||
--- a/configure
|
|
||||||
+++ b/configure
|
|
||||||
@@ -4494,6 +4494,21 @@ if test "$fortify_source" != "no"; then
|
|
||||||
fi
|
|
||||||
|
|
||||||
##########################################
|
|
||||||
+# check if struct fsxattr is available via linux/fs.h
|
|
||||||
+
|
|
||||||
+have_fsxattr=no
|
|
||||||
+cat > $TMPC << EOF
|
|
||||||
+#include <linux/fs.h>
|
|
||||||
+struct fsxattr foo;
|
|
||||||
+int main(void) {
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+EOF
|
|
||||||
+if compile_prog "" "" ; then
|
|
||||||
+ have_fsxattr=yes
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+##########################################
|
|
||||||
# End of CC checks
|
|
||||||
# After here, no more $cc or $ld runs
|
|
||||||
|
|
||||||
@@ -5160,6 +5175,14 @@ fi
|
|
||||||
if test "$have_ifaddrs_h" = "yes" ; then
|
|
||||||
echo "HAVE_IFADDRS_H=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
+
|
|
||||||
+# Work around a system header bug with some kernel/XFS header
|
|
||||||
+# versions where they both try to define 'struct fsxattr':
|
|
||||||
+# xfs headers will not try to redefine structs from linux headers
|
|
||||||
+# if this macro is set.
|
|
||||||
+if test "$have_fsxattr" = "yes" ; then
|
|
||||||
+ echo "HAVE_FSXATTR=y" >> $config_host_mak
|
|
||||||
+fi
|
|
||||||
if test "$vte" = "yes" ; then
|
|
||||||
echo "CONFIG_VTE=y" >> $config_host_mak
|
|
||||||
echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
|
|
||||||
--
|
|
||||||
2.8.2
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
|||||||
https://lists.gnu.org/archive/html/qemu-devel/2016-06/msg01611.html
|
|
||||||
|
|
||||||
From 6a2909cf98e892783b2502df6f7f4de46d13e42b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mike Frysinger <vapier@chromium.org>
|
|
||||||
Date: Mon, 6 Jun 2016 17:58:26 -0400
|
|
||||||
Subject: [PATCH] crypto: aes: always rename internal symbols
|
|
||||||
|
|
||||||
OpenSSL's libcrypto always defines AES symbols with the same names as
|
|
||||||
qemu's local aes code. This is problematic when enabling at least curl
|
|
||||||
as that frequently also uses libcrypto. It might not be noticed when
|
|
||||||
running, but if you try to statically link, everything falls down.
|
|
||||||
|
|
||||||
An example snippet:
|
|
||||||
LINK qemu-nbd
|
|
||||||
.../libcrypto.a(aes-x86_64.o): In function 'AES_encrypt':
|
|
||||||
(.text+0x460): multiple definition of 'AES_encrypt'
|
|
||||||
crypto/aes.o:aes.c:(.text+0x670): first defined here
|
|
||||||
.../libcrypto.a(aes-x86_64.o): In function 'AES_decrypt':
|
|
||||||
(.text+0x9f0): multiple definition of 'AES_decrypt'
|
|
||||||
crypto/aes.o:aes.c:(.text+0xb30): first defined here
|
|
||||||
.../libcrypto.a(aes-x86_64.o): In function 'AES_cbc_encrypt':
|
|
||||||
(.text+0xf90): multiple definition of 'AES_cbc_encrypt'
|
|
||||||
crypto/aes.o:aes.c:(.text+0xff0): first defined here
|
|
||||||
collect2: error: ld returned 1 exit status
|
|
||||||
.../qemu-2.6.0/rules.mak:105: recipe for target 'qemu-nbd' failed
|
|
||||||
make: *** [qemu-nbd] Error 1
|
|
||||||
|
|
||||||
The aes.h header has redefines already for FreeBSD, but go ahead and
|
|
||||||
enable that for everyone since there's no real good reason to not use
|
|
||||||
a namespace all the time.
|
|
||||||
|
|
||||||
Signed-off-by: Mike Frysinger <vapier@chromium.org>
|
|
||||||
---
|
|
||||||
include/crypto/aes.h | 5 ++---
|
|
||||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/crypto/aes.h b/include/crypto/aes.h
|
|
||||||
index a006da2224a9..12fb321b89de 100644
|
|
||||||
--- a/include/crypto/aes.h
|
|
||||||
+++ b/include/crypto/aes.h
|
|
||||||
@@ -10,14 +10,13 @@ struct aes_key_st {
|
|
||||||
};
|
|
||||||
typedef struct aes_key_st AES_KEY;
|
|
||||||
|
|
||||||
-/* FreeBSD has its own AES_set_decrypt_key in -lcrypto, avoid conflicts */
|
|
||||||
-#ifdef __FreeBSD__
|
|
||||||
+/* FreeBSD/OpenSSL have their own AES functions with the same names in -lcrypto
|
|
||||||
+ * (which might be pulled in via curl), so redefine to avoid conflicts. */
|
|
||||||
#define AES_set_encrypt_key QEMU_AES_set_encrypt_key
|
|
||||||
#define AES_set_decrypt_key QEMU_AES_set_decrypt_key
|
|
||||||
#define AES_encrypt QEMU_AES_encrypt
|
|
||||||
#define AES_decrypt QEMU_AES_decrypt
|
|
||||||
#define AES_cbc_encrypt QEMU_AES_cbc_encrypt
|
|
||||||
-#endif
|
|
||||||
|
|
||||||
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
|
|
||||||
AES_KEY *key);
|
|
||||||
--
|
|
||||||
2.8.2
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
|||||||
|
From: Li Qiang <address@hidden>
|
||||||
|
|
||||||
|
In Vmxnet3 device emulator while processing transmit(tx) queue,
|
||||||
|
when it reaches end of packet, it calls vmxnet3_complete_packet.
|
||||||
|
In that local 'txcq_descr' object is not initialised, which could
|
||||||
|
leak host memory bytes a guest.
|
||||||
|
|
||||||
|
Reported-by: Li Qiang <address@hidden>
|
||||||
|
Signed-off-by: Prasad J Pandit <address@hidden>
|
||||||
|
---
|
||||||
|
hw/net/vmxnet3.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
|
||||||
|
index 90f6943..92f6af9 100644
|
||||||
|
--- a/hw/net/vmxnet3.c
|
||||||
|
+++ b/hw/net/vmxnet3.c
|
||||||
|
@@ -531,6 +531,7 @@ static void vmxnet3_complete_packet(VMXNET3State *s, int qidx, uint32_t tx_ridx)
|
||||||
|
|
||||||
|
VMXNET3_RING_DUMP(VMW_RIPRN, "TXC", qidx, &s->txq_descr[qidx].comp_ring);
|
||||||
|
|
||||||
|
+ memset(&txcq_descr, 0, sizeof(txcq_descr));
|
||||||
|
txcq_descr.txdIdx = tx_ridx;
|
||||||
|
txcq_descr.gen = vmxnet3_ring_curr_gen(&s->txq_descr[qidx].comp_ring);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.5.5
|
@ -1,5 +1,5 @@
|
|||||||
#!/sbin/openrc-run
|
#!/sbin/openrc-run
|
||||||
# Copyright 1999-2014 Gentoo Foundation
|
# Copyright 1999-2016 Gentoo Foundation
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ start() {
|
|||||||
echo ':sparc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sparc:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register
|
echo ':sparc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sparc:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register
|
||||||
fi
|
fi
|
||||||
if [ $cpu != "ppc" -a -x "/usr/bin/qemu-ppc" ] ; then
|
if [ $cpu != "ppc" -a -x "/usr/bin/qemu-ppc" ] ; then
|
||||||
echo ':ppc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-ppc:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register
|
echo ':ppc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-ppc:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register
|
||||||
fi
|
fi
|
||||||
if [ $cpu != "m68k" -a -x "/usr/bin/qemu-m68k" ] ; then
|
if [ $cpu != "m68k" -a -x "/usr/bin/qemu-m68k" ] ; then
|
||||||
#echo 'Please check cpu value and header information for m68k!'
|
#echo 'Please check cpu value and header information for m68k!'
|
||||||
|
@ -1,694 +0,0 @@
|
|||||||
# Copyright 1999-2016 Gentoo Foundation
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
# $Id$
|
|
||||||
|
|
||||||
EAPI=5
|
|
||||||
|
|
||||||
PYTHON_COMPAT=( python2_7 )
|
|
||||||
PYTHON_REQ_USE="ncurses,readline"
|
|
||||||
|
|
||||||
PLOCALES="de_DE fr_FR hu it tr zh_CN"
|
|
||||||
|
|
||||||
inherit eutils flag-o-matic linux-info toolchain-funcs multilib python-r1 \
|
|
||||||
user udev fcaps readme.gentoo pax-utils l10n
|
|
||||||
|
|
||||||
BACKPORTS=
|
|
||||||
|
|
||||||
if [[ ${PV} = *9999* ]]; then
|
|
||||||
EGIT_REPO_URI="git://git.qemu.org/qemu.git"
|
|
||||||
inherit git-2
|
|
||||||
SRC_URI=""
|
|
||||||
else
|
|
||||||
SRC_URI="http://wiki.qemu-project.org/download/${P}.tar.bz2
|
|
||||||
${BACKPORTS:+
|
|
||||||
https://dev.gentoo.org/~cardoe/distfiles/${P}-${BACKPORTS}.tar.xz}"
|
|
||||||
KEYWORDS="amd64 ~arm64 ~ppc ~ppc64 x86 ~x86-fbsd"
|
|
||||||
fi
|
|
||||||
|
|
||||||
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
|
|
||||||
HOMEPAGE="http://www.qemu.org http://www.linux-kvm.org"
|
|
||||||
|
|
||||||
LICENSE="GPL-2 LGPL-2 BSD-2"
|
|
||||||
SLOT="0"
|
|
||||||
IUSE="accessibility +aio alsa bluetooth +caps +curl debug +fdt glusterfs \
|
|
||||||
gnutls gtk gtk2 infiniband iscsi +jpeg \
|
|
||||||
kernel_linux kernel_FreeBSD lzo ncurses nfs nls numa opengl +pin-upstream-blobs
|
|
||||||
+png pulseaudio python \
|
|
||||||
rbd sasl +seccomp sdl sdl2 selinux smartcard snappy spice ssh static static-softmmu
|
|
||||||
static-user systemtap tci test +threads usb usbredir +uuid vde +vhost-net \
|
|
||||||
virgl virtfs +vnc vte xattr xen xfs"
|
|
||||||
|
|
||||||
COMMON_TARGETS="aarch64 alpha arm cris i386 m68k microblaze microblazeel mips
|
|
||||||
mips64 mips64el mipsel or32 ppc ppc64 s390x sh4 sh4eb sparc sparc64 unicore32
|
|
||||||
x86_64"
|
|
||||||
IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} lm32 moxie ppcemb tricore xtensa xtensaeb"
|
|
||||||
IUSE_USER_TARGETS="${COMMON_TARGETS} armeb mipsn32 mipsn32el ppc64abi32 ppc64le sparc32plus tilegx"
|
|
||||||
|
|
||||||
use_softmmu_targets=$(printf ' qemu_softmmu_targets_%s' ${IUSE_SOFTMMU_TARGETS})
|
|
||||||
use_user_targets=$(printf ' qemu_user_targets_%s' ${IUSE_USER_TARGETS})
|
|
||||||
IUSE+=" ${use_softmmu_targets} ${use_user_targets}"
|
|
||||||
|
|
||||||
# Allow no targets to be built so that people can get a tools-only build.
|
|
||||||
# Block USE flag configurations known to not work.
|
|
||||||
REQUIRED_USE="${PYTHON_REQUIRED_USE}
|
|
||||||
gtk2? ( gtk )
|
|
||||||
qemu_softmmu_targets_arm? ( fdt )
|
|
||||||
qemu_softmmu_targets_microblaze? ( fdt )
|
|
||||||
qemu_softmmu_targets_ppc? ( fdt )
|
|
||||||
qemu_softmmu_targets_ppc64? ( fdt )
|
|
||||||
sdl2? ( sdl )
|
|
||||||
static? ( static-softmmu static-user )
|
|
||||||
static-softmmu? ( !alsa !pulseaudio !bluetooth !opengl !gtk !gtk2 )
|
|
||||||
virtfs? ( xattr )
|
|
||||||
vte? ( gtk )"
|
|
||||||
|
|
||||||
# Yep, you need both libcap and libcap-ng since virtfs only uses libcap.
|
|
||||||
#
|
|
||||||
# The attr lib isn't always linked in (although the USE flag is always
|
|
||||||
# respected). This is because qemu supports using the C library's API
|
|
||||||
# when available rather than always using the extranl library.
|
|
||||||
#
|
|
||||||
# Older versions of gnutls are supported, but it's simpler to just require
|
|
||||||
# the latest versions. This is also why we require nettle.
|
|
||||||
COMMON_LIB_DEPEND=">=dev-libs/glib-2.0[static-libs(+)]
|
|
||||||
sys-libs/zlib[static-libs(+)]
|
|
||||||
xattr? ( sys-apps/attr[static-libs(+)] )"
|
|
||||||
SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
|
|
||||||
>=x11-libs/pixman-0.28.0[static-libs(+)]
|
|
||||||
accessibility? ( app-accessibility/brltty[static-libs(+)] )
|
|
||||||
aio? ( dev-libs/libaio[static-libs(+)] )
|
|
||||||
alsa? ( >=media-libs/alsa-lib-1.0.13 )
|
|
||||||
bluetooth? ( net-wireless/bluez )
|
|
||||||
caps? ( sys-libs/libcap-ng[static-libs(+)] )
|
|
||||||
curl? ( >=net-misc/curl-7.15.4[static-libs(+)] )
|
|
||||||
fdt? ( >=sys-apps/dtc-1.4.0[static-libs(+)] )
|
|
||||||
glusterfs? ( >=sys-cluster/glusterfs-3.4.0[static-libs(+)] )
|
|
||||||
gnutls? (
|
|
||||||
dev-libs/nettle[static-libs(+)]
|
|
||||||
>=net-libs/gnutls-3.0[static-libs(+)]
|
|
||||||
)
|
|
||||||
gtk? (
|
|
||||||
gtk2? (
|
|
||||||
x11-libs/gtk+:2
|
|
||||||
vte? ( x11-libs/vte:0 )
|
|
||||||
)
|
|
||||||
!gtk2? (
|
|
||||||
x11-libs/gtk+:3
|
|
||||||
vte? ( x11-libs/vte:2.90 )
|
|
||||||
)
|
|
||||||
)
|
|
||||||
infiniband? ( sys-infiniband/librdmacm:=[static-libs(+)] )
|
|
||||||
iscsi? ( net-libs/libiscsi )
|
|
||||||
jpeg? ( virtual/jpeg:0=[static-libs(+)] )
|
|
||||||
lzo? ( dev-libs/lzo:2[static-libs(+)] )
|
|
||||||
ncurses? ( sys-libs/ncurses:0=[static-libs(+)] )
|
|
||||||
nfs? ( >=net-fs/libnfs-1.9.3[static-libs(+)] )
|
|
||||||
numa? ( sys-process/numactl[static-libs(+)] )
|
|
||||||
opengl? (
|
|
||||||
virtual/opengl
|
|
||||||
media-libs/libepoxy[static-libs(+)]
|
|
||||||
media-libs/mesa[static-libs(+)]
|
|
||||||
media-libs/mesa[egl,gles2]
|
|
||||||
)
|
|
||||||
png? ( media-libs/libpng:0=[static-libs(+)] )
|
|
||||||
pulseaudio? ( media-sound/pulseaudio )
|
|
||||||
rbd? ( sys-cluster/ceph[static-libs(+)] )
|
|
||||||
sasl? ( dev-libs/cyrus-sasl[static-libs(+)] )
|
|
||||||
sdl? (
|
|
||||||
!sdl2? (
|
|
||||||
media-libs/libsdl[X]
|
|
||||||
>=media-libs/libsdl-1.2.11[static-libs(+)]
|
|
||||||
)
|
|
||||||
sdl2? (
|
|
||||||
media-libs/libsdl2[X]
|
|
||||||
media-libs/libsdl2[static-libs(+)]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
seccomp? ( >=sys-libs/libseccomp-2.1.0[static-libs(+)] )
|
|
||||||
smartcard? ( >=app-emulation/libcacard-2.5.0[static-libs(+)] )
|
|
||||||
snappy? ( app-arch/snappy[static-libs(+)] )
|
|
||||||
spice? (
|
|
||||||
>=app-emulation/spice-protocol-0.12.3
|
|
||||||
>=app-emulation/spice-0.12.0[static-libs(+)]
|
|
||||||
)
|
|
||||||
ssh? ( >=net-libs/libssh2-1.2.8[static-libs(+)] )
|
|
||||||
usb? ( >=virtual/libusb-1-r2[static-libs(+)] )
|
|
||||||
usbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] )
|
|
||||||
uuid? ( >=sys-apps/util-linux-2.16.0[static-libs(+)] )
|
|
||||||
vde? ( net-misc/vde[static-libs(+)] )
|
|
||||||
virgl? ( media-libs/virglrenderer[static-libs(+)] )
|
|
||||||
virtfs? ( sys-libs/libcap )
|
|
||||||
xfs? ( sys-fs/xfsprogs[static-libs(+)] )"
|
|
||||||
USER_LIB_DEPEND="${COMMON_LIB_DEPEND}"
|
|
||||||
X86_FIRMWARE_DEPEND="
|
|
||||||
>=sys-firmware/ipxe-1.0.0_p20130624
|
|
||||||
pin-upstream-blobs? (
|
|
||||||
~sys-firmware/seabios-1.8.2
|
|
||||||
~sys-firmware/sgabios-0.1_pre8
|
|
||||||
~sys-firmware/vgabios-0.7a
|
|
||||||
)
|
|
||||||
!pin-upstream-blobs? (
|
|
||||||
sys-firmware/seabios
|
|
||||||
sys-firmware/sgabios
|
|
||||||
sys-firmware/vgabios
|
|
||||||
)"
|
|
||||||
CDEPEND="
|
|
||||||
!static-softmmu? ( $(printf "%s? ( ${SOFTMMU_LIB_DEPEND//\[static-libs(+)]} ) " ${use_softmmu_targets}) )
|
|
||||||
!static-user? ( $(printf "%s? ( ${USER_LIB_DEPEND//\[static-libs(+)]} ) " ${use_user_targets}) )
|
|
||||||
qemu_softmmu_targets_i386? ( ${X86_FIRMWARE_DEPEND} )
|
|
||||||
qemu_softmmu_targets_x86_64? ( ${X86_FIRMWARE_DEPEND} )
|
|
||||||
python? ( ${PYTHON_DEPS} )
|
|
||||||
systemtap? ( dev-util/systemtap )
|
|
||||||
xen? ( app-emulation/xen-tools:= )"
|
|
||||||
DEPEND="${CDEPEND}
|
|
||||||
dev-lang/perl
|
|
||||||
=dev-lang/python-2*
|
|
||||||
sys-apps/texinfo
|
|
||||||
virtual/pkgconfig
|
|
||||||
kernel_linux? ( >=sys-kernel/linux-headers-2.6.35 )
|
|
||||||
gtk? ( nls? ( sys-devel/gettext ) )
|
|
||||||
static-softmmu? ( $(printf "%s? ( ${SOFTMMU_LIB_DEPEND} ) " ${use_softmmu_targets}) )
|
|
||||||
static-user? ( $(printf "%s? ( ${USER_LIB_DEPEND} ) " ${use_user_targets}) )
|
|
||||||
test? (
|
|
||||||
dev-libs/glib[utils]
|
|
||||||
sys-devel/bc
|
|
||||||
)"
|
|
||||||
RDEPEND="${CDEPEND}
|
|
||||||
selinux? ( sec-policy/selinux-qemu )
|
|
||||||
"
|
|
||||||
|
|
||||||
STRIP_MASK="/usr/share/qemu/palcode-clipper"
|
|
||||||
|
|
||||||
QA_PREBUILT="
|
|
||||||
usr/share/qemu/openbios-ppc
|
|
||||||
usr/share/qemu/openbios-sparc64
|
|
||||||
usr/share/qemu/openbios-sparc32
|
|
||||||
usr/share/qemu/palcode-clipper
|
|
||||||
usr/share/qemu/s390-ccw.img
|
|
||||||
usr/share/qemu/u-boot.e500
|
|
||||||
"
|
|
||||||
|
|
||||||
QA_WX_LOAD="usr/bin/qemu-i386
|
|
||||||
usr/bin/qemu-x86_64
|
|
||||||
usr/bin/qemu-alpha
|
|
||||||
usr/bin/qemu-arm
|
|
||||||
usr/bin/qemu-cris
|
|
||||||
usr/bin/qemu-m68k
|
|
||||||
usr/bin/qemu-microblaze
|
|
||||||
usr/bin/qemu-microblazeel
|
|
||||||
usr/bin/qemu-mips
|
|
||||||
usr/bin/qemu-mipsel
|
|
||||||
usr/bin/qemu-or32
|
|
||||||
usr/bin/qemu-ppc
|
|
||||||
usr/bin/qemu-ppc64
|
|
||||||
usr/bin/qemu-ppc64abi32
|
|
||||||
usr/bin/qemu-sh4
|
|
||||||
usr/bin/qemu-sh4eb
|
|
||||||
usr/bin/qemu-sparc
|
|
||||||
usr/bin/qemu-sparc64
|
|
||||||
usr/bin/qemu-armeb
|
|
||||||
usr/bin/qemu-sparc32plus
|
|
||||||
usr/bin/qemu-s390x
|
|
||||||
usr/bin/qemu-unicore32"
|
|
||||||
|
|
||||||
DOC_CONTENTS="If you don't have kvm compiled into the kernel, make sure
|
|
||||||
you have the kernel module loaded before running kvm. The easiest way to
|
|
||||||
ensure that the kernel module is loaded is to load it on boot.\n
|
|
||||||
For AMD CPUs the module is called 'kvm-amd'\n
|
|
||||||
For Intel CPUs the module is called 'kvm-intel'\n
|
|
||||||
Please review /etc/conf.d/modules for how to load these\n\n
|
|
||||||
Make sure your user is in the 'kvm' group\n
|
|
||||||
Just run 'gpasswd -a <USER> kvm', then have <USER> re-login."
|
|
||||||
|
|
||||||
qemu_support_kvm() {
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 \
|
|
||||||
use qemu_softmmu_targets_ppc || use qemu_softmmu_targets_ppc64 \
|
|
||||||
use qemu_softmmu_targets_s390x; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_pretend() {
|
|
||||||
if use kernel_linux && kernel_is lt 2 6 25; then
|
|
||||||
eerror "This version of KVM requres a host kernel of 2.6.25 or higher."
|
|
||||||
elif use kernel_linux; then
|
|
||||||
if ! linux_config_exists; then
|
|
||||||
eerror "Unable to check your kernel for KVM support"
|
|
||||||
else
|
|
||||||
CONFIG_CHECK="~KVM ~TUN ~BRIDGE"
|
|
||||||
ERROR_KVM="You must enable KVM in your kernel to continue"
|
|
||||||
ERROR_KVM_AMD="If you have an AMD CPU, you must enable KVM_AMD in"
|
|
||||||
ERROR_KVM_AMD+=" your kernel configuration."
|
|
||||||
ERROR_KVM_INTEL="If you have an Intel CPU, you must enable"
|
|
||||||
ERROR_KVM_INTEL+=" KVM_INTEL in your kernel configuration."
|
|
||||||
ERROR_TUN="You will need the Universal TUN/TAP driver compiled"
|
|
||||||
ERROR_TUN+=" into your kernel or loaded as a module to use the"
|
|
||||||
ERROR_TUN+=" virtual network device if using -net tap."
|
|
||||||
ERROR_BRIDGE="You will also need support for 802.1d"
|
|
||||||
ERROR_BRIDGE+=" Ethernet Bridging for some network configurations."
|
|
||||||
use vhost-net && CONFIG_CHECK+=" ~VHOST_NET"
|
|
||||||
ERROR_VHOST_NET="You must enable VHOST_NET to have vhost-net"
|
|
||||||
ERROR_VHOST_NET+=" support"
|
|
||||||
|
|
||||||
if use amd64 || use x86 || use amd64-linux || use x86-linux; then
|
|
||||||
CONFIG_CHECK+=" ~KVM_AMD ~KVM_INTEL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
use python && CONFIG_CHECK+=" ~DEBUG_FS"
|
|
||||||
ERROR_DEBUG_FS="debugFS support required for kvm_stat"
|
|
||||||
|
|
||||||
# Now do the actual checks setup above
|
|
||||||
check_extra_config
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -qs '/usr/bin/qemu-kvm' "${EROOT}"/etc/libvirt/qemu/*.xml; then
|
|
||||||
eerror "The kvm/qemu-kvm wrappers no longer exist, but your libvirt"
|
|
||||||
eerror "instances are still pointing to it. Please update your"
|
|
||||||
eerror "configs in /etc/libvirt/qemu/ to use the -enable-kvm flag"
|
|
||||||
eerror "and the right system binary (e.g. qemu-system-x86_64)."
|
|
||||||
die "update your virt configs to not use qemu-kvm"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_setup() {
|
|
||||||
enewgroup kvm 78
|
|
||||||
}
|
|
||||||
|
|
||||||
# Sanity check to make sure target lists are kept up-to-date.
|
|
||||||
check_targets() {
|
|
||||||
local var=$1 mak=$2
|
|
||||||
local detected sorted
|
|
||||||
|
|
||||||
pushd "${S}"/default-configs >/dev/null || die
|
|
||||||
|
|
||||||
# Force C locale until glibc is updated. #564936
|
|
||||||
detected=$(echo $(printf '%s\n' *-${mak}.mak | sed "s:-${mak}.mak::" | LC_COLLATE=C sort -u))
|
|
||||||
sorted=$(echo $(printf '%s\n' ${!var} | LC_COLLATE=C sort -u))
|
|
||||||
if [[ ${sorted} != "${detected}" ]] ; then
|
|
||||||
eerror "The ebuild needs to be kept in sync."
|
|
||||||
eerror "${var}: ${sorted}"
|
|
||||||
eerror "$(printf '%-*s' ${#var} configure): ${detected}"
|
|
||||||
die "sync ${var} to the list of targets"
|
|
||||||
fi
|
|
||||||
|
|
||||||
popd >/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_locales() {
|
|
||||||
# Make sure locale list is kept up-to-date.
|
|
||||||
local detected sorted
|
|
||||||
detected=$(echo $(cd po && printf '%s\n' *.po | grep -v messages.po | sed 's:.po$::' | sort -u))
|
|
||||||
sorted=$(echo $(printf '%s\n' ${PLOCALES} | sort -u))
|
|
||||||
if [[ ${sorted} != "${detected}" ]] ; then
|
|
||||||
eerror "The ebuild needs to be kept in sync."
|
|
||||||
eerror "PLOCALES: ${sorted}"
|
|
||||||
eerror " po/*.po: ${detected}"
|
|
||||||
die "sync PLOCALES"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Deal with selective install of locales.
|
|
||||||
if use nls ; then
|
|
||||||
# Delete locales the user does not want. #577814
|
|
||||||
rm_loc() { rm po/$1.po || die; }
|
|
||||||
l10n_for_each_disabled_locale_do rm_loc
|
|
||||||
else
|
|
||||||
# Cheap hack to disable gettext .mo generation.
|
|
||||||
rm -f po/*.po
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
src_prepare() {
|
|
||||||
check_targets IUSE_SOFTMMU_TARGETS softmmu
|
|
||||||
check_targets IUSE_USER_TARGETS linux-user
|
|
||||||
|
|
||||||
# Alter target makefiles to accept CFLAGS set via flag-o
|
|
||||||
sed -i -r \
|
|
||||||
-e 's/^(C|OP_C|HELPER_C)FLAGS=/\1FLAGS+=/' \
|
|
||||||
Makefile Makefile.target || die
|
|
||||||
|
|
||||||
epatch "${FILESDIR}"/qemu-2.5.0-cflags.patch
|
|
||||||
[[ -n ${BACKPORTS} ]] && \
|
|
||||||
EPATCH_FORCE=yes EPATCH_SUFFIX="patch" EPATCH_SOURCE="${S}/patches" \
|
|
||||||
epatch
|
|
||||||
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8567.patch #567868
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8558.patch #568246
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8701.patch #570110
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8743.patch #570988
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-1568.patch #571566
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8613.patch #569118
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8619.patch #569300
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-1714.patch #571560
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-1922.patch #572082
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-1981.patch #572412
|
|
||||||
epatch "${FILESDIR}"/${P}-usb-ehci-oob.patch #572454
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-2197.patch #573280
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-2198.patch #573314
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-2392.patch #574902
|
|
||||||
epatch "${FILESDIR}"/${P}-usb-ndis-int-overflow.patch #575492
|
|
||||||
epatch "${FILESDIR}"/${P}-rng-stack-corrupt-{0,1,2,3}.patch #576420
|
|
||||||
epatch "${FILESDIR}"/${P}-sysmacros.patch
|
|
||||||
|
|
||||||
# Fix ld and objcopy being called directly
|
|
||||||
tc-export AR LD OBJCOPY
|
|
||||||
|
|
||||||
# Verbose builds
|
|
||||||
MAKEOPTS+=" V=1"
|
|
||||||
|
|
||||||
epatch_user
|
|
||||||
|
|
||||||
# Run after we've applied all patches.
|
|
||||||
handle_locales
|
|
||||||
}
|
|
||||||
|
|
||||||
##
|
|
||||||
# configures qemu based on the build directory and the build type
|
|
||||||
# we are using.
|
|
||||||
#
|
|
||||||
qemu_src_configure() {
|
|
||||||
debug-print-function ${FUNCNAME} "$@"
|
|
||||||
|
|
||||||
local buildtype=$1
|
|
||||||
local builddir="${S}/${buildtype}-build"
|
|
||||||
local static_flag="static-${buildtype}"
|
|
||||||
|
|
||||||
mkdir "${builddir}"
|
|
||||||
|
|
||||||
local conf_opts=(
|
|
||||||
--prefix=/usr
|
|
||||||
--sysconfdir=/etc
|
|
||||||
--libdir=/usr/$(get_libdir)
|
|
||||||
--docdir=/usr/share/doc/${PF}/html
|
|
||||||
--disable-bsd-user
|
|
||||||
--disable-guest-agent
|
|
||||||
--disable-strip
|
|
||||||
--disable-werror
|
|
||||||
# We support gnutls/nettle for crypto operations. It is possible
|
|
||||||
# to use gcrypt when gnutls/nettle are disabled (but not when they
|
|
||||||
# are enabled), but it's not really worth the hassle. Disable it
|
|
||||||
# all the time to avoid automatically detecting it. #568856
|
|
||||||
--disable-gcrypt
|
|
||||||
--python="${PYTHON}"
|
|
||||||
--cc="$(tc-getCC)"
|
|
||||||
--cxx="$(tc-getCXX)"
|
|
||||||
--host-cc="$(tc-getBUILD_CC)"
|
|
||||||
$(use_enable debug debug-info)
|
|
||||||
$(use_enable debug debug-tcg)
|
|
||||||
--enable-docs
|
|
||||||
$(use_enable tci tcg-interpreter)
|
|
||||||
$(use_enable xattr attr)
|
|
||||||
)
|
|
||||||
|
|
||||||
# Disable options not used by user targets as the default configure
|
|
||||||
# options will autoprobe and try to link in a bunch of unused junk.
|
|
||||||
conf_softmmu() {
|
|
||||||
if [[ ${buildtype} == "user" ]] ; then
|
|
||||||
echo "--disable-${2:-$1}"
|
|
||||||
else
|
|
||||||
use_enable "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
conf_opts+=(
|
|
||||||
$(conf_softmmu accessibility brlapi)
|
|
||||||
$(conf_softmmu aio linux-aio)
|
|
||||||
$(conf_softmmu bluetooth bluez)
|
|
||||||
$(conf_softmmu caps cap-ng)
|
|
||||||
$(conf_softmmu curl)
|
|
||||||
$(conf_softmmu fdt)
|
|
||||||
$(conf_softmmu glusterfs)
|
|
||||||
$(conf_softmmu gnutls)
|
|
||||||
$(conf_softmmu gnutls nettle)
|
|
||||||
$(conf_softmmu gtk)
|
|
||||||
$(conf_softmmu infiniband rdma)
|
|
||||||
$(conf_softmmu iscsi libiscsi)
|
|
||||||
$(conf_softmmu jpeg vnc-jpeg)
|
|
||||||
$(conf_softmmu kernel_linux kvm)
|
|
||||||
$(conf_softmmu lzo)
|
|
||||||
$(conf_softmmu ncurses curses)
|
|
||||||
$(conf_softmmu nfs libnfs)
|
|
||||||
$(conf_softmmu numa)
|
|
||||||
$(conf_softmmu opengl)
|
|
||||||
$(conf_softmmu png vnc-png)
|
|
||||||
$(conf_softmmu rbd)
|
|
||||||
$(conf_softmmu sasl vnc-sasl)
|
|
||||||
$(conf_softmmu sdl)
|
|
||||||
$(conf_softmmu seccomp)
|
|
||||||
$(conf_softmmu smartcard)
|
|
||||||
$(conf_softmmu snappy)
|
|
||||||
$(conf_softmmu spice)
|
|
||||||
$(conf_softmmu ssh libssh2)
|
|
||||||
$(conf_softmmu usb libusb)
|
|
||||||
$(conf_softmmu usbredir usb-redir)
|
|
||||||
$(conf_softmmu uuid)
|
|
||||||
$(conf_softmmu vde)
|
|
||||||
$(conf_softmmu vhost-net)
|
|
||||||
$(conf_softmmu virgl virglrenderer)
|
|
||||||
$(conf_softmmu virtfs)
|
|
||||||
$(conf_softmmu vnc)
|
|
||||||
$(conf_softmmu vte)
|
|
||||||
$(conf_softmmu xen)
|
|
||||||
$(conf_softmmu xen xen-pci-passthrough)
|
|
||||||
$(conf_softmmu xfs xfsctl)
|
|
||||||
)
|
|
||||||
|
|
||||||
case ${buildtype} in
|
|
||||||
user)
|
|
||||||
conf_opts+=(
|
|
||||||
--enable-linux-user
|
|
||||||
--disable-system
|
|
||||||
--disable-blobs
|
|
||||||
--disable-tools
|
|
||||||
)
|
|
||||||
;;
|
|
||||||
softmmu)
|
|
||||||
# audio options
|
|
||||||
local audio_opts="oss"
|
|
||||||
use alsa && audio_opts="alsa,${audio_opts}"
|
|
||||||
use sdl && audio_opts="sdl,${audio_opts}"
|
|
||||||
use pulseaudio && audio_opts="pa,${audio_opts}"
|
|
||||||
|
|
||||||
conf_opts+=(
|
|
||||||
--disable-linux-user
|
|
||||||
--enable-system
|
|
||||||
--with-system-pixman
|
|
||||||
--audio-drv-list="${audio_opts}"
|
|
||||||
)
|
|
||||||
use gtk && conf_opts+=( --with-gtkabi=$(usex gtk2 2.0 3.0) )
|
|
||||||
use sdl && conf_opts+=( --with-sdlabi=$(usex sdl2 2.0 1.2) )
|
|
||||||
;;
|
|
||||||
tools)
|
|
||||||
conf_opts+=(
|
|
||||||
--disable-linux-user
|
|
||||||
--disable-system
|
|
||||||
--disable-blobs
|
|
||||||
)
|
|
||||||
static_flag="static"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
local targets="${buildtype}_targets"
|
|
||||||
[[ -n ${targets} ]] && conf_opts+=( --target-list="${!targets}" )
|
|
||||||
|
|
||||||
# Add support for SystemTAP
|
|
||||||
use systemtap && conf_opts+=( --enable-trace-backend=dtrace )
|
|
||||||
|
|
||||||
# We always want to attempt to build with PIE support as it results
|
|
||||||
# in a more secure binary. But it doesn't work with static or if
|
|
||||||
# the current GCC doesn't have PIE support.
|
|
||||||
if use ${static_flag}; then
|
|
||||||
conf_opts+=( --static --disable-pie )
|
|
||||||
else
|
|
||||||
gcc-specs-pie && conf_opts+=( --enable-pie )
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "../configure ${conf_opts[*]}"
|
|
||||||
cd "${builddir}"
|
|
||||||
../configure "${conf_opts[@]}" || die "configure failed"
|
|
||||||
|
|
||||||
# FreeBSD's kernel does not support QEMU assigning/grabbing
|
|
||||||
# host USB devices yet
|
|
||||||
use kernel_FreeBSD && \
|
|
||||||
sed -i -E -e "s|^(HOST_USB=)bsd|\1stub|" "${S}"/config-host.mak
|
|
||||||
}
|
|
||||||
|
|
||||||
src_configure() {
|
|
||||||
local target
|
|
||||||
|
|
||||||
python_setup
|
|
||||||
|
|
||||||
softmmu_targets= softmmu_bins=()
|
|
||||||
user_targets= user_bins=()
|
|
||||||
|
|
||||||
for target in ${IUSE_SOFTMMU_TARGETS} ; do
|
|
||||||
if use "qemu_softmmu_targets_${target}"; then
|
|
||||||
softmmu_targets+=",${target}-softmmu"
|
|
||||||
softmmu_bins+=( "qemu-system-${target}" )
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
for target in ${IUSE_USER_TARGETS} ; do
|
|
||||||
if use "qemu_user_targets_${target}"; then
|
|
||||||
user_targets+=",${target}-linux-user"
|
|
||||||
user_bins+=( "qemu-${target}" )
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
softmmu_targets=${softmmu_targets#,}
|
|
||||||
user_targets=${user_targets#,}
|
|
||||||
|
|
||||||
[[ -n ${softmmu_targets} ]] && qemu_src_configure "softmmu"
|
|
||||||
[[ -n ${user_targets} ]] && qemu_src_configure "user"
|
|
||||||
[[ -z ${softmmu_targets}${user_targets} ]] && qemu_src_configure "tools"
|
|
||||||
}
|
|
||||||
|
|
||||||
src_compile() {
|
|
||||||
if [[ -n ${user_targets} ]]; then
|
|
||||||
cd "${S}/user-build"
|
|
||||||
default
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
cd "${S}/softmmu-build"
|
|
||||||
default
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z ${softmmu_targets}${user_targets} ]]; then
|
|
||||||
cd "${S}/tools-build"
|
|
||||||
default
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
src_test() {
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
cd "${S}/softmmu-build"
|
|
||||||
pax-mark m */qemu-system-* #515550
|
|
||||||
emake -j1 check
|
|
||||||
emake -j1 check-report.html
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
qemu_python_install() {
|
|
||||||
python_domodule "${S}/scripts/qmp/qmp.py"
|
|
||||||
|
|
||||||
python_doscript "${S}/scripts/kvm/kvm_stat"
|
|
||||||
python_doscript "${S}/scripts/kvm/vmxcap"
|
|
||||||
python_doscript "${S}/scripts/qmp/qmp-shell"
|
|
||||||
python_doscript "${S}/scripts/qmp/qemu-ga-client"
|
|
||||||
}
|
|
||||||
|
|
||||||
src_install() {
|
|
||||||
if [[ -n ${user_targets} ]]; then
|
|
||||||
cd "${S}/user-build"
|
|
||||||
emake DESTDIR="${ED}" install
|
|
||||||
|
|
||||||
# Install binfmt handler init script for user targets
|
|
||||||
newinitd "${FILESDIR}/qemu-binfmt.initd-r1" qemu-binfmt
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
cd "${S}/softmmu-build"
|
|
||||||
emake DESTDIR="${ED}" install
|
|
||||||
|
|
||||||
# This might not exist if the test failed. #512010
|
|
||||||
[[ -e check-report.html ]] && dohtml check-report.html
|
|
||||||
|
|
||||||
if use kernel_linux; then
|
|
||||||
udev_dorules "${FILESDIR}"/65-kvm.rules
|
|
||||||
fi
|
|
||||||
|
|
||||||
if use python; then
|
|
||||||
python_foreach_impl qemu_python_install
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z ${softmmu_targets}${user_targets} ]]; then
|
|
||||||
cd "${S}/tools-build"
|
|
||||||
emake DESTDIR="${ED}" install
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Disable mprotect on the qemu binaries as they use JITs to be fast #459348
|
|
||||||
pushd "${ED}"/usr/bin >/dev/null
|
|
||||||
pax-mark m "${softmmu_bins[@]}" "${user_bins[@]}"
|
|
||||||
popd >/dev/null
|
|
||||||
|
|
||||||
# Install config file example for qemu-bridge-helper
|
|
||||||
insinto "/etc/qemu"
|
|
||||||
doins "${FILESDIR}/bridge.conf"
|
|
||||||
|
|
||||||
# Remove the docdir placed qmp-commands.txt
|
|
||||||
mv "${ED}/usr/share/doc/${PF}/html/qmp-commands.txt" "${S}/docs/" || die
|
|
||||||
|
|
||||||
cd "${S}"
|
|
||||||
dodoc Changelog MAINTAINERS docs/specs/pci-ids.txt
|
|
||||||
newdoc pc-bios/README README.pc-bios
|
|
||||||
dodoc docs/qmp-*.txt
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
# Remove SeaBIOS since we're using the SeaBIOS packaged one
|
|
||||||
rm "${ED}/usr/share/qemu/bios.bin"
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../seabios/bios.bin /usr/share/qemu/bios.bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove vgabios since we're using the vgabios packaged one
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-cirrus.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-qxl.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-stdvga.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-vmware.bin"
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../vgabios/vgabios.bin /usr/share/qemu/vgabios.bin
|
|
||||||
dosym ../vgabios/vgabios-cirrus.bin /usr/share/qemu/vgabios-cirrus.bin
|
|
||||||
dosym ../vgabios/vgabios-qxl.bin /usr/share/qemu/vgabios-qxl.bin
|
|
||||||
dosym ../vgabios/vgabios-stdvga.bin /usr/share/qemu/vgabios-stdvga.bin
|
|
||||||
dosym ../vgabios/vgabios-vmware.bin /usr/share/qemu/vgabios-vmware.bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove sgabios since we're using the sgabios packaged one
|
|
||||||
rm "${ED}/usr/share/qemu/sgabios.bin"
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../sgabios/sgabios.bin /usr/share/qemu/sgabios.bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove iPXE since we're using the iPXE packaged one
|
|
||||||
rm "${ED}"/usr/share/qemu/pxe-*.rom
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../ipxe/8086100e.rom /usr/share/qemu/pxe-e1000.rom
|
|
||||||
dosym ../ipxe/80861209.rom /usr/share/qemu/pxe-eepro100.rom
|
|
||||||
dosym ../ipxe/10500940.rom /usr/share/qemu/pxe-ne2k_pci.rom
|
|
||||||
dosym ../ipxe/10222000.rom /usr/share/qemu/pxe-pcnet.rom
|
|
||||||
dosym ../ipxe/10ec8139.rom /usr/share/qemu/pxe-rtl8139.rom
|
|
||||||
dosym ../ipxe/1af41000.rom /usr/share/qemu/pxe-virtio.rom
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
qemu_support_kvm && readme.gentoo_create_doc
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_postinst() {
|
|
||||||
if qemu_support_kvm; then
|
|
||||||
readme.gentoo_print_elog
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]] && use kernel_linux; then
|
|
||||||
udev_reload
|
|
||||||
fi
|
|
||||||
|
|
||||||
fcaps cap_net_admin /usr/libexec/qemu-bridge-helper
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_info() {
|
|
||||||
echo "Using:"
|
|
||||||
echo " $(best_version app-emulation/spice-protocol)"
|
|
||||||
echo " $(best_version sys-firmware/ipxe)"
|
|
||||||
echo " $(best_version sys-firmware/seabios)"
|
|
||||||
if has_version 'sys-firmware/seabios[binary]'; then
|
|
||||||
echo " USE=binary"
|
|
||||||
else
|
|
||||||
echo " USE=''"
|
|
||||||
fi
|
|
||||||
echo " $(best_version sys-firmware/vgabios)"
|
|
||||||
}
|
|
@ -1,699 +0,0 @@
|
|||||||
# Copyright 1999-2016 Gentoo Foundation
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
# $Id$
|
|
||||||
|
|
||||||
EAPI=5
|
|
||||||
|
|
||||||
PYTHON_COMPAT=( python2_7 )
|
|
||||||
PYTHON_REQ_USE="ncurses,readline"
|
|
||||||
|
|
||||||
PLOCALES="de_DE fr_FR hu it tr zh_CN"
|
|
||||||
|
|
||||||
inherit eutils flag-o-matic linux-info toolchain-funcs multilib python-r1 \
|
|
||||||
user udev fcaps readme.gentoo pax-utils l10n
|
|
||||||
|
|
||||||
BACKPORTS=
|
|
||||||
|
|
||||||
if [[ ${PV} = *9999* ]]; then
|
|
||||||
EGIT_REPO_URI="git://git.qemu.org/qemu.git"
|
|
||||||
inherit git-2
|
|
||||||
SRC_URI=""
|
|
||||||
else
|
|
||||||
SRC_URI="http://wiki.qemu-project.org/download/${P}.tar.bz2
|
|
||||||
${BACKPORTS:+
|
|
||||||
https://dev.gentoo.org/~cardoe/distfiles/${P}-${BACKPORTS}.tar.xz}"
|
|
||||||
KEYWORDS="amd64 ~arm64 ~ppc ~ppc64 x86 ~x86-fbsd"
|
|
||||||
fi
|
|
||||||
|
|
||||||
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
|
|
||||||
HOMEPAGE="http://www.qemu.org http://www.linux-kvm.org"
|
|
||||||
|
|
||||||
LICENSE="GPL-2 LGPL-2 BSD-2"
|
|
||||||
SLOT="0"
|
|
||||||
IUSE="accessibility +aio alsa bluetooth +caps +curl debug +fdt glusterfs \
|
|
||||||
gnutls gtk gtk2 infiniband iscsi +jpeg \
|
|
||||||
kernel_linux kernel_FreeBSD lzo ncurses nfs nls numa opengl +pin-upstream-blobs
|
|
||||||
+png pulseaudio python \
|
|
||||||
rbd sasl +seccomp sdl sdl2 selinux smartcard snappy spice ssh static static-softmmu
|
|
||||||
static-user systemtap tci test +threads usb usbredir +uuid vde +vhost-net \
|
|
||||||
virgl virtfs +vnc vte xattr xen xfs"
|
|
||||||
|
|
||||||
COMMON_TARGETS="aarch64 alpha arm cris i386 m68k microblaze microblazeel mips
|
|
||||||
mips64 mips64el mipsel or32 ppc ppc64 s390x sh4 sh4eb sparc sparc64 unicore32
|
|
||||||
x86_64"
|
|
||||||
IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} lm32 moxie ppcemb tricore xtensa xtensaeb"
|
|
||||||
IUSE_USER_TARGETS="${COMMON_TARGETS} armeb mipsn32 mipsn32el ppc64abi32 ppc64le sparc32plus tilegx"
|
|
||||||
|
|
||||||
use_softmmu_targets=$(printf ' qemu_softmmu_targets_%s' ${IUSE_SOFTMMU_TARGETS})
|
|
||||||
use_user_targets=$(printf ' qemu_user_targets_%s' ${IUSE_USER_TARGETS})
|
|
||||||
IUSE+=" ${use_softmmu_targets} ${use_user_targets}"
|
|
||||||
|
|
||||||
# Allow no targets to be built so that people can get a tools-only build.
|
|
||||||
# Block USE flag configurations known to not work.
|
|
||||||
REQUIRED_USE="${PYTHON_REQUIRED_USE}
|
|
||||||
gtk2? ( gtk )
|
|
||||||
qemu_softmmu_targets_arm? ( fdt )
|
|
||||||
qemu_softmmu_targets_microblaze? ( fdt )
|
|
||||||
qemu_softmmu_targets_ppc? ( fdt )
|
|
||||||
qemu_softmmu_targets_ppc64? ( fdt )
|
|
||||||
sdl2? ( sdl )
|
|
||||||
static? ( static-softmmu static-user )
|
|
||||||
static-softmmu? ( !alsa !pulseaudio !bluetooth !opengl !gtk !gtk2 )
|
|
||||||
virtfs? ( xattr )
|
|
||||||
vte? ( gtk )"
|
|
||||||
|
|
||||||
# Yep, you need both libcap and libcap-ng since virtfs only uses libcap.
|
|
||||||
#
|
|
||||||
# The attr lib isn't always linked in (although the USE flag is always
|
|
||||||
# respected). This is because qemu supports using the C library's API
|
|
||||||
# when available rather than always using the extranl library.
|
|
||||||
#
|
|
||||||
# Older versions of gnutls are supported, but it's simpler to just require
|
|
||||||
# the latest versions. This is also why we require nettle.
|
|
||||||
COMMON_LIB_DEPEND=">=dev-libs/glib-2.0[static-libs(+)]
|
|
||||||
sys-libs/zlib[static-libs(+)]
|
|
||||||
xattr? ( sys-apps/attr[static-libs(+)] )"
|
|
||||||
SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
|
|
||||||
>=x11-libs/pixman-0.28.0[static-libs(+)]
|
|
||||||
accessibility? ( app-accessibility/brltty[static-libs(+)] )
|
|
||||||
aio? ( dev-libs/libaio[static-libs(+)] )
|
|
||||||
alsa? ( >=media-libs/alsa-lib-1.0.13 )
|
|
||||||
bluetooth? ( net-wireless/bluez )
|
|
||||||
caps? ( sys-libs/libcap-ng[static-libs(+)] )
|
|
||||||
curl? ( >=net-misc/curl-7.15.4[static-libs(+)] )
|
|
||||||
fdt? ( >=sys-apps/dtc-1.4.0[static-libs(+)] )
|
|
||||||
glusterfs? ( >=sys-cluster/glusterfs-3.4.0[static-libs(+)] )
|
|
||||||
gnutls? (
|
|
||||||
dev-libs/nettle[static-libs(+)]
|
|
||||||
>=net-libs/gnutls-3.0[static-libs(+)]
|
|
||||||
)
|
|
||||||
gtk? (
|
|
||||||
gtk2? (
|
|
||||||
x11-libs/gtk+:2
|
|
||||||
vte? ( x11-libs/vte:0 )
|
|
||||||
)
|
|
||||||
!gtk2? (
|
|
||||||
x11-libs/gtk+:3
|
|
||||||
vte? ( x11-libs/vte:2.90 )
|
|
||||||
)
|
|
||||||
)
|
|
||||||
infiniband? ( sys-infiniband/librdmacm:=[static-libs(+)] )
|
|
||||||
iscsi? ( net-libs/libiscsi )
|
|
||||||
jpeg? ( virtual/jpeg:0=[static-libs(+)] )
|
|
||||||
lzo? ( dev-libs/lzo:2[static-libs(+)] )
|
|
||||||
ncurses? ( sys-libs/ncurses:0=[static-libs(+)] )
|
|
||||||
nfs? ( >=net-fs/libnfs-1.9.3[static-libs(+)] )
|
|
||||||
numa? ( sys-process/numactl[static-libs(+)] )
|
|
||||||
opengl? (
|
|
||||||
virtual/opengl
|
|
||||||
media-libs/libepoxy[static-libs(+)]
|
|
||||||
media-libs/mesa[static-libs(+)]
|
|
||||||
media-libs/mesa[egl,gles2]
|
|
||||||
)
|
|
||||||
png? ( media-libs/libpng:0=[static-libs(+)] )
|
|
||||||
pulseaudio? ( media-sound/pulseaudio )
|
|
||||||
rbd? ( sys-cluster/ceph[static-libs(+)] )
|
|
||||||
sasl? ( dev-libs/cyrus-sasl[static-libs(+)] )
|
|
||||||
sdl? (
|
|
||||||
!sdl2? (
|
|
||||||
media-libs/libsdl[X]
|
|
||||||
>=media-libs/libsdl-1.2.11[static-libs(+)]
|
|
||||||
)
|
|
||||||
sdl2? (
|
|
||||||
media-libs/libsdl2[X]
|
|
||||||
media-libs/libsdl2[static-libs(+)]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
seccomp? ( >=sys-libs/libseccomp-2.1.0[static-libs(+)] )
|
|
||||||
smartcard? ( >=app-emulation/libcacard-2.5.0[static-libs(+)] )
|
|
||||||
snappy? ( app-arch/snappy[static-libs(+)] )
|
|
||||||
spice? (
|
|
||||||
>=app-emulation/spice-protocol-0.12.3
|
|
||||||
>=app-emulation/spice-0.12.0[static-libs(+)]
|
|
||||||
)
|
|
||||||
ssh? ( >=net-libs/libssh2-1.2.8[static-libs(+)] )
|
|
||||||
usb? ( >=virtual/libusb-1-r2[static-libs(+)] )
|
|
||||||
usbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] )
|
|
||||||
uuid? ( >=sys-apps/util-linux-2.16.0[static-libs(+)] )
|
|
||||||
vde? ( net-misc/vde[static-libs(+)] )
|
|
||||||
virgl? ( media-libs/virglrenderer[static-libs(+)] )
|
|
||||||
virtfs? ( sys-libs/libcap )
|
|
||||||
xfs? ( sys-fs/xfsprogs[static-libs(+)] )"
|
|
||||||
USER_LIB_DEPEND="${COMMON_LIB_DEPEND}"
|
|
||||||
X86_FIRMWARE_DEPEND="
|
|
||||||
>=sys-firmware/ipxe-1.0.0_p20130624
|
|
||||||
pin-upstream-blobs? (
|
|
||||||
~sys-firmware/seabios-1.8.2
|
|
||||||
~sys-firmware/sgabios-0.1_pre8
|
|
||||||
~sys-firmware/vgabios-0.7a
|
|
||||||
)
|
|
||||||
!pin-upstream-blobs? (
|
|
||||||
sys-firmware/seabios
|
|
||||||
sys-firmware/sgabios
|
|
||||||
sys-firmware/vgabios
|
|
||||||
)"
|
|
||||||
CDEPEND="
|
|
||||||
!static-softmmu? ( $(printf "%s? ( ${SOFTMMU_LIB_DEPEND//\[static-libs(+)]} ) " ${use_softmmu_targets}) )
|
|
||||||
!static-user? ( $(printf "%s? ( ${USER_LIB_DEPEND//\[static-libs(+)]} ) " ${use_user_targets}) )
|
|
||||||
qemu_softmmu_targets_i386? ( ${X86_FIRMWARE_DEPEND} )
|
|
||||||
qemu_softmmu_targets_x86_64? ( ${X86_FIRMWARE_DEPEND} )
|
|
||||||
python? ( ${PYTHON_DEPS} )
|
|
||||||
systemtap? ( dev-util/systemtap )
|
|
||||||
xen? ( app-emulation/xen-tools:= )"
|
|
||||||
DEPEND="${CDEPEND}
|
|
||||||
dev-lang/perl
|
|
||||||
=dev-lang/python-2*
|
|
||||||
sys-apps/texinfo
|
|
||||||
virtual/pkgconfig
|
|
||||||
kernel_linux? ( >=sys-kernel/linux-headers-2.6.35 )
|
|
||||||
gtk? ( nls? ( sys-devel/gettext ) )
|
|
||||||
static-softmmu? ( $(printf "%s? ( ${SOFTMMU_LIB_DEPEND} ) " ${use_softmmu_targets}) )
|
|
||||||
static-user? ( $(printf "%s? ( ${USER_LIB_DEPEND} ) " ${use_user_targets}) )
|
|
||||||
test? (
|
|
||||||
dev-libs/glib[utils]
|
|
||||||
sys-devel/bc
|
|
||||||
)"
|
|
||||||
RDEPEND="${CDEPEND}
|
|
||||||
selinux? ( sec-policy/selinux-qemu )
|
|
||||||
"
|
|
||||||
|
|
||||||
STRIP_MASK="/usr/share/qemu/palcode-clipper"
|
|
||||||
|
|
||||||
QA_PREBUILT="
|
|
||||||
usr/share/qemu/openbios-ppc
|
|
||||||
usr/share/qemu/openbios-sparc64
|
|
||||||
usr/share/qemu/openbios-sparc32
|
|
||||||
usr/share/qemu/palcode-clipper
|
|
||||||
usr/share/qemu/s390-ccw.img
|
|
||||||
usr/share/qemu/u-boot.e500
|
|
||||||
"
|
|
||||||
|
|
||||||
QA_WX_LOAD="usr/bin/qemu-i386
|
|
||||||
usr/bin/qemu-x86_64
|
|
||||||
usr/bin/qemu-alpha
|
|
||||||
usr/bin/qemu-arm
|
|
||||||
usr/bin/qemu-cris
|
|
||||||
usr/bin/qemu-m68k
|
|
||||||
usr/bin/qemu-microblaze
|
|
||||||
usr/bin/qemu-microblazeel
|
|
||||||
usr/bin/qemu-mips
|
|
||||||
usr/bin/qemu-mipsel
|
|
||||||
usr/bin/qemu-or32
|
|
||||||
usr/bin/qemu-ppc
|
|
||||||
usr/bin/qemu-ppc64
|
|
||||||
usr/bin/qemu-ppc64abi32
|
|
||||||
usr/bin/qemu-sh4
|
|
||||||
usr/bin/qemu-sh4eb
|
|
||||||
usr/bin/qemu-sparc
|
|
||||||
usr/bin/qemu-sparc64
|
|
||||||
usr/bin/qemu-armeb
|
|
||||||
usr/bin/qemu-sparc32plus
|
|
||||||
usr/bin/qemu-s390x
|
|
||||||
usr/bin/qemu-unicore32"
|
|
||||||
|
|
||||||
DOC_CONTENTS="If you don't have kvm compiled into the kernel, make sure
|
|
||||||
you have the kernel module loaded before running kvm. The easiest way to
|
|
||||||
ensure that the kernel module is loaded is to load it on boot.\n
|
|
||||||
For AMD CPUs the module is called 'kvm-amd'.\n
|
|
||||||
For Intel CPUs the module is called 'kvm-intel'.\n
|
|
||||||
Please review /etc/conf.d/modules for how to load these.\n\n
|
|
||||||
Make sure your user is in the 'kvm' group\n
|
|
||||||
Just run 'gpasswd -a <USER> kvm', then have <USER> re-login.\n\n
|
|
||||||
For brand new installs, the default permissions on /dev/kvm might not let you
|
|
||||||
access it. You can tell udev to reset ownership/perms:\n
|
|
||||||
udevadm trigger -c add /dev/kvm"
|
|
||||||
|
|
||||||
qemu_support_kvm() {
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 \
|
|
||||||
use qemu_softmmu_targets_ppc || use qemu_softmmu_targets_ppc64 \
|
|
||||||
use qemu_softmmu_targets_s390x; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_pretend() {
|
|
||||||
if use kernel_linux && kernel_is lt 2 6 25; then
|
|
||||||
eerror "This version of KVM requres a host kernel of 2.6.25 or higher."
|
|
||||||
elif use kernel_linux; then
|
|
||||||
if ! linux_config_exists; then
|
|
||||||
eerror "Unable to check your kernel for KVM support"
|
|
||||||
else
|
|
||||||
CONFIG_CHECK="~KVM ~TUN ~BRIDGE"
|
|
||||||
ERROR_KVM="You must enable KVM in your kernel to continue"
|
|
||||||
ERROR_KVM_AMD="If you have an AMD CPU, you must enable KVM_AMD in"
|
|
||||||
ERROR_KVM_AMD+=" your kernel configuration."
|
|
||||||
ERROR_KVM_INTEL="If you have an Intel CPU, you must enable"
|
|
||||||
ERROR_KVM_INTEL+=" KVM_INTEL in your kernel configuration."
|
|
||||||
ERROR_TUN="You will need the Universal TUN/TAP driver compiled"
|
|
||||||
ERROR_TUN+=" into your kernel or loaded as a module to use the"
|
|
||||||
ERROR_TUN+=" virtual network device if using -net tap."
|
|
||||||
ERROR_BRIDGE="You will also need support for 802.1d"
|
|
||||||
ERROR_BRIDGE+=" Ethernet Bridging for some network configurations."
|
|
||||||
use vhost-net && CONFIG_CHECK+=" ~VHOST_NET"
|
|
||||||
ERROR_VHOST_NET="You must enable VHOST_NET to have vhost-net"
|
|
||||||
ERROR_VHOST_NET+=" support"
|
|
||||||
|
|
||||||
if use amd64 || use x86 || use amd64-linux || use x86-linux; then
|
|
||||||
CONFIG_CHECK+=" ~KVM_AMD ~KVM_INTEL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
use python && CONFIG_CHECK+=" ~DEBUG_FS"
|
|
||||||
ERROR_DEBUG_FS="debugFS support required for kvm_stat"
|
|
||||||
|
|
||||||
# Now do the actual checks setup above
|
|
||||||
check_extra_config
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -qs '/usr/bin/qemu-kvm' "${EROOT}"/etc/libvirt/qemu/*.xml; then
|
|
||||||
eerror "The kvm/qemu-kvm wrappers no longer exist, but your libvirt"
|
|
||||||
eerror "instances are still pointing to it. Please update your"
|
|
||||||
eerror "configs in /etc/libvirt/qemu/ to use the -enable-kvm flag"
|
|
||||||
eerror "and the right system binary (e.g. qemu-system-x86_64)."
|
|
||||||
die "update your virt configs to not use qemu-kvm"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_setup() {
|
|
||||||
enewgroup kvm 78
|
|
||||||
}
|
|
||||||
|
|
||||||
# Sanity check to make sure target lists are kept up-to-date.
|
|
||||||
check_targets() {
|
|
||||||
local var=$1 mak=$2
|
|
||||||
local detected sorted
|
|
||||||
|
|
||||||
pushd "${S}"/default-configs >/dev/null || die
|
|
||||||
|
|
||||||
# Force C locale until glibc is updated. #564936
|
|
||||||
detected=$(echo $(printf '%s\n' *-${mak}.mak | sed "s:-${mak}.mak::" | LC_COLLATE=C sort -u))
|
|
||||||
sorted=$(echo $(printf '%s\n' ${!var} | LC_COLLATE=C sort -u))
|
|
||||||
if [[ ${sorted} != "${detected}" ]] ; then
|
|
||||||
eerror "The ebuild needs to be kept in sync."
|
|
||||||
eerror "${var}: ${sorted}"
|
|
||||||
eerror "$(printf '%-*s' ${#var} configure): ${detected}"
|
|
||||||
die "sync ${var} to the list of targets"
|
|
||||||
fi
|
|
||||||
|
|
||||||
popd >/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_locales() {
|
|
||||||
# Make sure locale list is kept up-to-date.
|
|
||||||
local detected sorted
|
|
||||||
detected=$(echo $(cd po && printf '%s\n' *.po | grep -v messages.po | sed 's:.po$::' | sort -u))
|
|
||||||
sorted=$(echo $(printf '%s\n' ${PLOCALES} | sort -u))
|
|
||||||
if [[ ${sorted} != "${detected}" ]] ; then
|
|
||||||
eerror "The ebuild needs to be kept in sync."
|
|
||||||
eerror "PLOCALES: ${sorted}"
|
|
||||||
eerror " po/*.po: ${detected}"
|
|
||||||
die "sync PLOCALES"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Deal with selective install of locales.
|
|
||||||
if use nls ; then
|
|
||||||
# Delete locales the user does not want. #577814
|
|
||||||
rm_loc() { rm po/$1.po || die; }
|
|
||||||
l10n_for_each_disabled_locale_do rm_loc
|
|
||||||
else
|
|
||||||
# Cheap hack to disable gettext .mo generation.
|
|
||||||
rm -f po/*.po
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
src_prepare() {
|
|
||||||
check_targets IUSE_SOFTMMU_TARGETS softmmu
|
|
||||||
check_targets IUSE_USER_TARGETS linux-user
|
|
||||||
|
|
||||||
# Alter target makefiles to accept CFLAGS set via flag-o
|
|
||||||
sed -i -r \
|
|
||||||
-e 's/^(C|OP_C|HELPER_C)FLAGS=/\1FLAGS+=/' \
|
|
||||||
Makefile Makefile.target || die
|
|
||||||
|
|
||||||
epatch "${FILESDIR}"/qemu-2.5.0-cflags.patch
|
|
||||||
[[ -n ${BACKPORTS} ]] && \
|
|
||||||
EPATCH_FORCE=yes EPATCH_SUFFIX="patch" EPATCH_SOURCE="${S}/patches" \
|
|
||||||
epatch
|
|
||||||
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8567.patch #567868
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8558.patch #568246
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8701.patch #570110
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8743.patch #570988
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-1568.patch #571566
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8613.patch #569118
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2015-8619.patch #569300
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-1714.patch #571560
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-1922.patch #572082
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-1981.patch #572412
|
|
||||||
epatch "${FILESDIR}"/${P}-usb-ehci-oob.patch #572454
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-2197.patch #573280
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-2198.patch #573314
|
|
||||||
epatch "${FILESDIR}"/${P}-CVE-2016-2392.patch #574902
|
|
||||||
epatch "${FILESDIR}"/${P}-usb-ndis-int-overflow.patch #575492
|
|
||||||
epatch "${FILESDIR}"/${P}-rng-stack-corrupt-{0,1,2,3}.patch #576420
|
|
||||||
epatch "${FILESDIR}"/${P}-sysmacros.patch
|
|
||||||
epatch "${FILESDIR}"/${P}-ne2000-reg-check.patch #573816
|
|
||||||
epatch "${FILESDIR}"/${P}-9pfs-segfault.patch #578142
|
|
||||||
|
|
||||||
# Fix ld and objcopy being called directly
|
|
||||||
tc-export AR LD OBJCOPY
|
|
||||||
|
|
||||||
# Verbose builds
|
|
||||||
MAKEOPTS+=" V=1"
|
|
||||||
|
|
||||||
epatch_user
|
|
||||||
|
|
||||||
# Run after we've applied all patches.
|
|
||||||
handle_locales
|
|
||||||
}
|
|
||||||
|
|
||||||
##
|
|
||||||
# configures qemu based on the build directory and the build type
|
|
||||||
# we are using.
|
|
||||||
#
|
|
||||||
qemu_src_configure() {
|
|
||||||
debug-print-function ${FUNCNAME} "$@"
|
|
||||||
|
|
||||||
local buildtype=$1
|
|
||||||
local builddir="${S}/${buildtype}-build"
|
|
||||||
local static_flag="static-${buildtype}"
|
|
||||||
|
|
||||||
mkdir "${builddir}"
|
|
||||||
|
|
||||||
local conf_opts=(
|
|
||||||
--prefix=/usr
|
|
||||||
--sysconfdir=/etc
|
|
||||||
--libdir=/usr/$(get_libdir)
|
|
||||||
--docdir=/usr/share/doc/${PF}/html
|
|
||||||
--disable-bsd-user
|
|
||||||
--disable-guest-agent
|
|
||||||
--disable-strip
|
|
||||||
--disable-werror
|
|
||||||
# We support gnutls/nettle for crypto operations. It is possible
|
|
||||||
# to use gcrypt when gnutls/nettle are disabled (but not when they
|
|
||||||
# are enabled), but it's not really worth the hassle. Disable it
|
|
||||||
# all the time to avoid automatically detecting it. #568856
|
|
||||||
--disable-gcrypt
|
|
||||||
--python="${PYTHON}"
|
|
||||||
--cc="$(tc-getCC)"
|
|
||||||
--cxx="$(tc-getCXX)"
|
|
||||||
--host-cc="$(tc-getBUILD_CC)"
|
|
||||||
$(use_enable debug debug-info)
|
|
||||||
$(use_enable debug debug-tcg)
|
|
||||||
--enable-docs
|
|
||||||
$(use_enable tci tcg-interpreter)
|
|
||||||
$(use_enable xattr attr)
|
|
||||||
)
|
|
||||||
|
|
||||||
# Disable options not used by user targets as the default configure
|
|
||||||
# options will autoprobe and try to link in a bunch of unused junk.
|
|
||||||
conf_softmmu() {
|
|
||||||
if [[ ${buildtype} == "user" ]] ; then
|
|
||||||
echo "--disable-${2:-$1}"
|
|
||||||
else
|
|
||||||
use_enable "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
conf_opts+=(
|
|
||||||
$(conf_softmmu accessibility brlapi)
|
|
||||||
$(conf_softmmu aio linux-aio)
|
|
||||||
$(conf_softmmu bluetooth bluez)
|
|
||||||
$(conf_softmmu caps cap-ng)
|
|
||||||
$(conf_softmmu curl)
|
|
||||||
$(conf_softmmu fdt)
|
|
||||||
$(conf_softmmu glusterfs)
|
|
||||||
$(conf_softmmu gnutls)
|
|
||||||
$(conf_softmmu gnutls nettle)
|
|
||||||
$(conf_softmmu gtk)
|
|
||||||
$(conf_softmmu infiniband rdma)
|
|
||||||
$(conf_softmmu iscsi libiscsi)
|
|
||||||
$(conf_softmmu jpeg vnc-jpeg)
|
|
||||||
$(conf_softmmu kernel_linux kvm)
|
|
||||||
$(conf_softmmu lzo)
|
|
||||||
$(conf_softmmu ncurses curses)
|
|
||||||
$(conf_softmmu nfs libnfs)
|
|
||||||
$(conf_softmmu numa)
|
|
||||||
$(conf_softmmu opengl)
|
|
||||||
$(conf_softmmu png vnc-png)
|
|
||||||
$(conf_softmmu rbd)
|
|
||||||
$(conf_softmmu sasl vnc-sasl)
|
|
||||||
$(conf_softmmu sdl)
|
|
||||||
$(conf_softmmu seccomp)
|
|
||||||
$(conf_softmmu smartcard)
|
|
||||||
$(conf_softmmu snappy)
|
|
||||||
$(conf_softmmu spice)
|
|
||||||
$(conf_softmmu ssh libssh2)
|
|
||||||
$(conf_softmmu usb libusb)
|
|
||||||
$(conf_softmmu usbredir usb-redir)
|
|
||||||
$(conf_softmmu uuid)
|
|
||||||
$(conf_softmmu vde)
|
|
||||||
$(conf_softmmu vhost-net)
|
|
||||||
$(conf_softmmu virgl virglrenderer)
|
|
||||||
$(conf_softmmu virtfs)
|
|
||||||
$(conf_softmmu vnc)
|
|
||||||
$(conf_softmmu vte)
|
|
||||||
$(conf_softmmu xen)
|
|
||||||
$(conf_softmmu xen xen-pci-passthrough)
|
|
||||||
$(conf_softmmu xfs xfsctl)
|
|
||||||
)
|
|
||||||
|
|
||||||
case ${buildtype} in
|
|
||||||
user)
|
|
||||||
conf_opts+=(
|
|
||||||
--enable-linux-user
|
|
||||||
--disable-system
|
|
||||||
--disable-blobs
|
|
||||||
--disable-tools
|
|
||||||
)
|
|
||||||
;;
|
|
||||||
softmmu)
|
|
||||||
# audio options
|
|
||||||
local audio_opts="oss"
|
|
||||||
use alsa && audio_opts="alsa,${audio_opts}"
|
|
||||||
use sdl && audio_opts="sdl,${audio_opts}"
|
|
||||||
use pulseaudio && audio_opts="pa,${audio_opts}"
|
|
||||||
|
|
||||||
conf_opts+=(
|
|
||||||
--disable-linux-user
|
|
||||||
--enable-system
|
|
||||||
--with-system-pixman
|
|
||||||
--audio-drv-list="${audio_opts}"
|
|
||||||
)
|
|
||||||
use gtk && conf_opts+=( --with-gtkabi=$(usex gtk2 2.0 3.0) )
|
|
||||||
use sdl && conf_opts+=( --with-sdlabi=$(usex sdl2 2.0 1.2) )
|
|
||||||
;;
|
|
||||||
tools)
|
|
||||||
conf_opts+=(
|
|
||||||
--disable-linux-user
|
|
||||||
--disable-system
|
|
||||||
--disable-blobs
|
|
||||||
)
|
|
||||||
static_flag="static"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
local targets="${buildtype}_targets"
|
|
||||||
[[ -n ${targets} ]] && conf_opts+=( --target-list="${!targets}" )
|
|
||||||
|
|
||||||
# Add support for SystemTAP
|
|
||||||
use systemtap && conf_opts+=( --enable-trace-backend=dtrace )
|
|
||||||
|
|
||||||
# We always want to attempt to build with PIE support as it results
|
|
||||||
# in a more secure binary. But it doesn't work with static or if
|
|
||||||
# the current GCC doesn't have PIE support.
|
|
||||||
if use ${static_flag}; then
|
|
||||||
conf_opts+=( --static --disable-pie )
|
|
||||||
else
|
|
||||||
gcc-specs-pie && conf_opts+=( --enable-pie )
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "../configure ${conf_opts[*]}"
|
|
||||||
cd "${builddir}"
|
|
||||||
../configure "${conf_opts[@]}" || die "configure failed"
|
|
||||||
|
|
||||||
# FreeBSD's kernel does not support QEMU assigning/grabbing
|
|
||||||
# host USB devices yet
|
|
||||||
use kernel_FreeBSD && \
|
|
||||||
sed -i -E -e "s|^(HOST_USB=)bsd|\1stub|" "${S}"/config-host.mak
|
|
||||||
}
|
|
||||||
|
|
||||||
src_configure() {
|
|
||||||
local target
|
|
||||||
|
|
||||||
python_setup
|
|
||||||
|
|
||||||
softmmu_targets= softmmu_bins=()
|
|
||||||
user_targets= user_bins=()
|
|
||||||
|
|
||||||
for target in ${IUSE_SOFTMMU_TARGETS} ; do
|
|
||||||
if use "qemu_softmmu_targets_${target}"; then
|
|
||||||
softmmu_targets+=",${target}-softmmu"
|
|
||||||
softmmu_bins+=( "qemu-system-${target}" )
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
for target in ${IUSE_USER_TARGETS} ; do
|
|
||||||
if use "qemu_user_targets_${target}"; then
|
|
||||||
user_targets+=",${target}-linux-user"
|
|
||||||
user_bins+=( "qemu-${target}" )
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
softmmu_targets=${softmmu_targets#,}
|
|
||||||
user_targets=${user_targets#,}
|
|
||||||
|
|
||||||
[[ -n ${softmmu_targets} ]] && qemu_src_configure "softmmu"
|
|
||||||
[[ -n ${user_targets} ]] && qemu_src_configure "user"
|
|
||||||
[[ -z ${softmmu_targets}${user_targets} ]] && qemu_src_configure "tools"
|
|
||||||
}
|
|
||||||
|
|
||||||
src_compile() {
|
|
||||||
if [[ -n ${user_targets} ]]; then
|
|
||||||
cd "${S}/user-build"
|
|
||||||
default
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
cd "${S}/softmmu-build"
|
|
||||||
default
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z ${softmmu_targets}${user_targets} ]]; then
|
|
||||||
cd "${S}/tools-build"
|
|
||||||
default
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
src_test() {
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
cd "${S}/softmmu-build"
|
|
||||||
pax-mark m */qemu-system-* #515550
|
|
||||||
emake -j1 check
|
|
||||||
emake -j1 check-report.html
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
qemu_python_install() {
|
|
||||||
python_domodule "${S}/scripts/qmp/qmp.py"
|
|
||||||
|
|
||||||
python_doscript "${S}/scripts/kvm/kvm_stat"
|
|
||||||
python_doscript "${S}/scripts/kvm/vmxcap"
|
|
||||||
python_doscript "${S}/scripts/qmp/qmp-shell"
|
|
||||||
python_doscript "${S}/scripts/qmp/qemu-ga-client"
|
|
||||||
}
|
|
||||||
|
|
||||||
src_install() {
|
|
||||||
if [[ -n ${user_targets} ]]; then
|
|
||||||
cd "${S}/user-build"
|
|
||||||
emake DESTDIR="${ED}" install
|
|
||||||
|
|
||||||
# Install binfmt handler init script for user targets
|
|
||||||
newinitd "${FILESDIR}/qemu-binfmt.initd-r1" qemu-binfmt
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
cd "${S}/softmmu-build"
|
|
||||||
emake DESTDIR="${ED}" install
|
|
||||||
|
|
||||||
# This might not exist if the test failed. #512010
|
|
||||||
[[ -e check-report.html ]] && dohtml check-report.html
|
|
||||||
|
|
||||||
if use kernel_linux; then
|
|
||||||
udev_dorules "${FILESDIR}"/65-kvm.rules
|
|
||||||
fi
|
|
||||||
|
|
||||||
if use python; then
|
|
||||||
python_foreach_impl qemu_python_install
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z ${softmmu_targets}${user_targets} ]]; then
|
|
||||||
cd "${S}/tools-build"
|
|
||||||
emake DESTDIR="${ED}" install
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Disable mprotect on the qemu binaries as they use JITs to be fast #459348
|
|
||||||
pushd "${ED}"/usr/bin >/dev/null
|
|
||||||
pax-mark m "${softmmu_bins[@]}" "${user_bins[@]}"
|
|
||||||
popd >/dev/null
|
|
||||||
|
|
||||||
# Install config file example for qemu-bridge-helper
|
|
||||||
insinto "/etc/qemu"
|
|
||||||
doins "${FILESDIR}/bridge.conf"
|
|
||||||
|
|
||||||
# Remove the docdir placed qmp-commands.txt
|
|
||||||
mv "${ED}/usr/share/doc/${PF}/html/qmp-commands.txt" "${S}/docs/" || die
|
|
||||||
|
|
||||||
cd "${S}"
|
|
||||||
dodoc Changelog MAINTAINERS docs/specs/pci-ids.txt
|
|
||||||
newdoc pc-bios/README README.pc-bios
|
|
||||||
dodoc docs/qmp-*.txt
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
# Remove SeaBIOS since we're using the SeaBIOS packaged one
|
|
||||||
rm "${ED}/usr/share/qemu/bios.bin"
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../seabios/bios.bin /usr/share/qemu/bios.bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove vgabios since we're using the vgabios packaged one
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-cirrus.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-qxl.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-stdvga.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-vmware.bin"
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../vgabios/vgabios.bin /usr/share/qemu/vgabios.bin
|
|
||||||
dosym ../vgabios/vgabios-cirrus.bin /usr/share/qemu/vgabios-cirrus.bin
|
|
||||||
dosym ../vgabios/vgabios-qxl.bin /usr/share/qemu/vgabios-qxl.bin
|
|
||||||
dosym ../vgabios/vgabios-stdvga.bin /usr/share/qemu/vgabios-stdvga.bin
|
|
||||||
dosym ../vgabios/vgabios-vmware.bin /usr/share/qemu/vgabios-vmware.bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove sgabios since we're using the sgabios packaged one
|
|
||||||
rm "${ED}/usr/share/qemu/sgabios.bin"
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../sgabios/sgabios.bin /usr/share/qemu/sgabios.bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove iPXE since we're using the iPXE packaged one
|
|
||||||
rm "${ED}"/usr/share/qemu/pxe-*.rom
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../ipxe/8086100e.rom /usr/share/qemu/pxe-e1000.rom
|
|
||||||
dosym ../ipxe/80861209.rom /usr/share/qemu/pxe-eepro100.rom
|
|
||||||
dosym ../ipxe/10500940.rom /usr/share/qemu/pxe-ne2k_pci.rom
|
|
||||||
dosym ../ipxe/10222000.rom /usr/share/qemu/pxe-pcnet.rom
|
|
||||||
dosym ../ipxe/10ec8139.rom /usr/share/qemu/pxe-rtl8139.rom
|
|
||||||
dosym ../ipxe/1af41000.rom /usr/share/qemu/pxe-virtio.rom
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
qemu_support_kvm && readme.gentoo_create_doc
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_postinst() {
|
|
||||||
if qemu_support_kvm; then
|
|
||||||
readme.gentoo_print_elog
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]] && use kernel_linux; then
|
|
||||||
udev_reload
|
|
||||||
fi
|
|
||||||
|
|
||||||
fcaps cap_net_admin /usr/libexec/qemu-bridge-helper
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_info() {
|
|
||||||
echo "Using:"
|
|
||||||
echo " $(best_version app-emulation/spice-protocol)"
|
|
||||||
echo " $(best_version sys-firmware/ipxe)"
|
|
||||||
echo " $(best_version sys-firmware/seabios)"
|
|
||||||
if has_version 'sys-firmware/seabios[binary]'; then
|
|
||||||
echo " USE=binary"
|
|
||||||
else
|
|
||||||
echo " USE=''"
|
|
||||||
fi
|
|
||||||
echo " $(best_version sys-firmware/vgabios)"
|
|
||||||
}
|
|
@ -1,687 +0,0 @@
|
|||||||
# Copyright 1999-2016 Gentoo Foundation
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
# $Id$
|
|
||||||
|
|
||||||
EAPI=5
|
|
||||||
|
|
||||||
PYTHON_COMPAT=( python2_7 )
|
|
||||||
PYTHON_REQ_USE="ncurses,readline"
|
|
||||||
|
|
||||||
PLOCALES="de_DE fr_FR hu it tr zh_CN"
|
|
||||||
|
|
||||||
inherit eutils flag-o-matic linux-info toolchain-funcs multilib python-r1 \
|
|
||||||
user udev fcaps readme.gentoo pax-utils l10n
|
|
||||||
|
|
||||||
BACKPORTS=
|
|
||||||
|
|
||||||
if [[ ${PV} = *9999* ]]; then
|
|
||||||
EGIT_REPO_URI="git://git.qemu.org/qemu.git"
|
|
||||||
inherit git-2
|
|
||||||
SRC_URI=""
|
|
||||||
else
|
|
||||||
SRC_URI="http://wiki.qemu-project.org/download/${P}.tar.bz2
|
|
||||||
${BACKPORTS:+
|
|
||||||
https://dev.gentoo.org/~cardoe/distfiles/${P}-${BACKPORTS}.tar.xz}"
|
|
||||||
KEYWORDS="amd64 ~arm64 ~ppc ~ppc64 x86 ~x86-fbsd"
|
|
||||||
fi
|
|
||||||
|
|
||||||
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
|
|
||||||
HOMEPAGE="http://www.qemu.org http://www.linux-kvm.org"
|
|
||||||
|
|
||||||
LICENSE="GPL-2 LGPL-2 BSD-2"
|
|
||||||
SLOT="0"
|
|
||||||
IUSE="accessibility +aio alsa bluetooth +caps +curl debug +fdt glusterfs \
|
|
||||||
gnutls gtk gtk2 infiniband iscsi +jpeg \
|
|
||||||
kernel_linux kernel_FreeBSD lzo ncurses nfs nls numa opengl +pin-upstream-blobs
|
|
||||||
+png pulseaudio python \
|
|
||||||
rbd sasl +seccomp sdl sdl2 selinux smartcard snappy spice ssh static static-softmmu
|
|
||||||
static-user systemtap tci test +threads usb usbredir +uuid vde +vhost-net \
|
|
||||||
virgl virtfs +vnc vte xattr xen xfs"
|
|
||||||
|
|
||||||
COMMON_TARGETS="aarch64 alpha arm cris i386 m68k microblaze microblazeel mips
|
|
||||||
mips64 mips64el mipsel or32 ppc ppc64 s390x sh4 sh4eb sparc sparc64 unicore32
|
|
||||||
x86_64"
|
|
||||||
IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} lm32 moxie ppcemb tricore xtensa xtensaeb"
|
|
||||||
IUSE_USER_TARGETS="${COMMON_TARGETS} armeb mipsn32 mipsn32el ppc64abi32 ppc64le sparc32plus tilegx"
|
|
||||||
|
|
||||||
use_softmmu_targets=$(printf ' qemu_softmmu_targets_%s' ${IUSE_SOFTMMU_TARGETS})
|
|
||||||
use_user_targets=$(printf ' qemu_user_targets_%s' ${IUSE_USER_TARGETS})
|
|
||||||
IUSE+=" ${use_softmmu_targets} ${use_user_targets}"
|
|
||||||
|
|
||||||
# Allow no targets to be built so that people can get a tools-only build.
|
|
||||||
# Block USE flag configurations known to not work.
|
|
||||||
REQUIRED_USE="${PYTHON_REQUIRED_USE}
|
|
||||||
gtk2? ( gtk )
|
|
||||||
qemu_softmmu_targets_arm? ( fdt )
|
|
||||||
qemu_softmmu_targets_microblaze? ( fdt )
|
|
||||||
qemu_softmmu_targets_ppc? ( fdt )
|
|
||||||
qemu_softmmu_targets_ppc64? ( fdt )
|
|
||||||
sdl2? ( sdl )
|
|
||||||
static? ( static-softmmu static-user )
|
|
||||||
static-softmmu? ( !alsa !pulseaudio !bluetooth !opengl !gtk !gtk2 )
|
|
||||||
virtfs? ( xattr )
|
|
||||||
vte? ( gtk )"
|
|
||||||
|
|
||||||
# Yep, you need both libcap and libcap-ng since virtfs only uses libcap.
|
|
||||||
#
|
|
||||||
# The attr lib isn't always linked in (although the USE flag is always
|
|
||||||
# respected). This is because qemu supports using the C library's API
|
|
||||||
# when available rather than always using the extranl library.
|
|
||||||
#
|
|
||||||
# Older versions of gnutls are supported, but it's simpler to just require
|
|
||||||
# the latest versions. This is also why we require nettle.
|
|
||||||
COMMON_LIB_DEPEND=">=dev-libs/glib-2.0[static-libs(+)]
|
|
||||||
sys-libs/zlib[static-libs(+)]
|
|
||||||
xattr? ( sys-apps/attr[static-libs(+)] )"
|
|
||||||
SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
|
|
||||||
>=x11-libs/pixman-0.28.0[static-libs(+)]
|
|
||||||
accessibility? ( app-accessibility/brltty[static-libs(+)] )
|
|
||||||
aio? ( dev-libs/libaio[static-libs(+)] )
|
|
||||||
alsa? ( >=media-libs/alsa-lib-1.0.13 )
|
|
||||||
bluetooth? ( net-wireless/bluez )
|
|
||||||
caps? ( sys-libs/libcap-ng[static-libs(+)] )
|
|
||||||
curl? ( >=net-misc/curl-7.15.4[static-libs(+)] )
|
|
||||||
fdt? ( >=sys-apps/dtc-1.4.0[static-libs(+)] )
|
|
||||||
glusterfs? ( >=sys-cluster/glusterfs-3.4.0[static-libs(+)] )
|
|
||||||
gnutls? (
|
|
||||||
dev-libs/nettle:=[static-libs(+)]
|
|
||||||
>=net-libs/gnutls-3.0:=[static-libs(+)]
|
|
||||||
)
|
|
||||||
gtk? (
|
|
||||||
gtk2? (
|
|
||||||
x11-libs/gtk+:2
|
|
||||||
vte? ( x11-libs/vte:0 )
|
|
||||||
)
|
|
||||||
!gtk2? (
|
|
||||||
x11-libs/gtk+:3
|
|
||||||
vte? ( x11-libs/vte:2.90 )
|
|
||||||
)
|
|
||||||
)
|
|
||||||
infiniband? ( sys-infiniband/librdmacm:=[static-libs(+)] )
|
|
||||||
iscsi? ( net-libs/libiscsi )
|
|
||||||
jpeg? ( virtual/jpeg:0=[static-libs(+)] )
|
|
||||||
lzo? ( dev-libs/lzo:2[static-libs(+)] )
|
|
||||||
ncurses? ( sys-libs/ncurses:0=[static-libs(+)] )
|
|
||||||
nfs? ( >=net-fs/libnfs-1.9.3[static-libs(+)] )
|
|
||||||
numa? ( sys-process/numactl[static-libs(+)] )
|
|
||||||
opengl? (
|
|
||||||
virtual/opengl
|
|
||||||
media-libs/libepoxy[static-libs(+)]
|
|
||||||
media-libs/mesa[static-libs(+)]
|
|
||||||
media-libs/mesa[egl,gles2]
|
|
||||||
)
|
|
||||||
png? ( media-libs/libpng:0=[static-libs(+)] )
|
|
||||||
pulseaudio? ( media-sound/pulseaudio )
|
|
||||||
rbd? ( sys-cluster/ceph[static-libs(+)] )
|
|
||||||
sasl? ( dev-libs/cyrus-sasl[static-libs(+)] )
|
|
||||||
sdl? (
|
|
||||||
!sdl2? (
|
|
||||||
media-libs/libsdl[X]
|
|
||||||
>=media-libs/libsdl-1.2.11[static-libs(+)]
|
|
||||||
)
|
|
||||||
sdl2? (
|
|
||||||
media-libs/libsdl2[X]
|
|
||||||
media-libs/libsdl2[static-libs(+)]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
seccomp? ( >=sys-libs/libseccomp-2.1.0[static-libs(+)] )
|
|
||||||
smartcard? ( >=app-emulation/libcacard-2.5.0[static-libs(+)] )
|
|
||||||
snappy? ( app-arch/snappy[static-libs(+)] )
|
|
||||||
spice? (
|
|
||||||
>=app-emulation/spice-protocol-0.12.3
|
|
||||||
>=app-emulation/spice-0.12.0[static-libs(+)]
|
|
||||||
)
|
|
||||||
ssh? ( >=net-libs/libssh2-1.2.8[static-libs(+)] )
|
|
||||||
usb? ( >=virtual/libusb-1-r2[static-libs(+)] )
|
|
||||||
usbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] )
|
|
||||||
uuid? ( >=sys-apps/util-linux-2.16.0[static-libs(+)] )
|
|
||||||
vde? ( net-misc/vde[static-libs(+)] )
|
|
||||||
virgl? ( media-libs/virglrenderer[static-libs(+)] )
|
|
||||||
virtfs? ( sys-libs/libcap )
|
|
||||||
xfs? ( sys-fs/xfsprogs[static-libs(+)] )"
|
|
||||||
USER_LIB_DEPEND="${COMMON_LIB_DEPEND}"
|
|
||||||
X86_FIRMWARE_DEPEND="
|
|
||||||
>=sys-firmware/ipxe-1.0.0_p20130624
|
|
||||||
pin-upstream-blobs? (
|
|
||||||
~sys-firmware/seabios-1.8.2
|
|
||||||
~sys-firmware/sgabios-0.1_pre8
|
|
||||||
~sys-firmware/vgabios-0.7a
|
|
||||||
)
|
|
||||||
!pin-upstream-blobs? (
|
|
||||||
sys-firmware/seabios
|
|
||||||
sys-firmware/sgabios
|
|
||||||
sys-firmware/vgabios
|
|
||||||
)"
|
|
||||||
CDEPEND="
|
|
||||||
!static-softmmu? ( $(printf "%s? ( ${SOFTMMU_LIB_DEPEND//\[static-libs(+)]} ) " ${use_softmmu_targets}) )
|
|
||||||
!static-user? ( $(printf "%s? ( ${USER_LIB_DEPEND//\[static-libs(+)]} ) " ${use_user_targets}) )
|
|
||||||
qemu_softmmu_targets_i386? ( ${X86_FIRMWARE_DEPEND} )
|
|
||||||
qemu_softmmu_targets_x86_64? ( ${X86_FIRMWARE_DEPEND} )
|
|
||||||
python? ( ${PYTHON_DEPS} )
|
|
||||||
systemtap? ( dev-util/systemtap )
|
|
||||||
xen? ( app-emulation/xen-tools:= )"
|
|
||||||
DEPEND="${CDEPEND}
|
|
||||||
dev-lang/perl
|
|
||||||
=dev-lang/python-2*
|
|
||||||
sys-apps/texinfo
|
|
||||||
virtual/pkgconfig
|
|
||||||
kernel_linux? ( >=sys-kernel/linux-headers-2.6.35 )
|
|
||||||
gtk? ( nls? ( sys-devel/gettext ) )
|
|
||||||
static-softmmu? ( $(printf "%s? ( ${SOFTMMU_LIB_DEPEND} ) " ${use_softmmu_targets}) )
|
|
||||||
static-user? ( $(printf "%s? ( ${USER_LIB_DEPEND} ) " ${use_user_targets}) )
|
|
||||||
test? (
|
|
||||||
dev-libs/glib[utils]
|
|
||||||
sys-devel/bc
|
|
||||||
)"
|
|
||||||
RDEPEND="${CDEPEND}
|
|
||||||
selinux? ( sec-policy/selinux-qemu )
|
|
||||||
"
|
|
||||||
|
|
||||||
STRIP_MASK="/usr/share/qemu/palcode-clipper"
|
|
||||||
|
|
||||||
QA_PREBUILT="
|
|
||||||
usr/share/qemu/openbios-ppc
|
|
||||||
usr/share/qemu/openbios-sparc64
|
|
||||||
usr/share/qemu/openbios-sparc32
|
|
||||||
usr/share/qemu/palcode-clipper
|
|
||||||
usr/share/qemu/s390-ccw.img
|
|
||||||
usr/share/qemu/u-boot.e500
|
|
||||||
"
|
|
||||||
|
|
||||||
QA_WX_LOAD="usr/bin/qemu-i386
|
|
||||||
usr/bin/qemu-x86_64
|
|
||||||
usr/bin/qemu-alpha
|
|
||||||
usr/bin/qemu-arm
|
|
||||||
usr/bin/qemu-cris
|
|
||||||
usr/bin/qemu-m68k
|
|
||||||
usr/bin/qemu-microblaze
|
|
||||||
usr/bin/qemu-microblazeel
|
|
||||||
usr/bin/qemu-mips
|
|
||||||
usr/bin/qemu-mipsel
|
|
||||||
usr/bin/qemu-or32
|
|
||||||
usr/bin/qemu-ppc
|
|
||||||
usr/bin/qemu-ppc64
|
|
||||||
usr/bin/qemu-ppc64abi32
|
|
||||||
usr/bin/qemu-sh4
|
|
||||||
usr/bin/qemu-sh4eb
|
|
||||||
usr/bin/qemu-sparc
|
|
||||||
usr/bin/qemu-sparc64
|
|
||||||
usr/bin/qemu-armeb
|
|
||||||
usr/bin/qemu-sparc32plus
|
|
||||||
usr/bin/qemu-s390x
|
|
||||||
usr/bin/qemu-unicore32"
|
|
||||||
|
|
||||||
DOC_CONTENTS="If you don't have kvm compiled into the kernel, make sure
|
|
||||||
you have the kernel module loaded before running kvm. The easiest way to
|
|
||||||
ensure that the kernel module is loaded is to load it on boot.\n
|
|
||||||
For AMD CPUs the module is called 'kvm-amd'.\n
|
|
||||||
For Intel CPUs the module is called 'kvm-intel'.\n
|
|
||||||
Please review /etc/conf.d/modules for how to load these.\n\n
|
|
||||||
Make sure your user is in the 'kvm' group\n
|
|
||||||
Just run 'gpasswd -a <USER> kvm', then have <USER> re-login.\n\n
|
|
||||||
For brand new installs, the default permissions on /dev/kvm might not let you
|
|
||||||
access it. You can tell udev to reset ownership/perms:\n
|
|
||||||
udevadm trigger -c add /dev/kvm"
|
|
||||||
|
|
||||||
qemu_support_kvm() {
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 \
|
|
||||||
use qemu_softmmu_targets_ppc || use qemu_softmmu_targets_ppc64 \
|
|
||||||
use qemu_softmmu_targets_s390x; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_pretend() {
|
|
||||||
if use kernel_linux && kernel_is lt 2 6 25; then
|
|
||||||
eerror "This version of KVM requres a host kernel of 2.6.25 or higher."
|
|
||||||
elif use kernel_linux; then
|
|
||||||
if ! linux_config_exists; then
|
|
||||||
eerror "Unable to check your kernel for KVM support"
|
|
||||||
else
|
|
||||||
CONFIG_CHECK="~KVM ~TUN ~BRIDGE"
|
|
||||||
ERROR_KVM="You must enable KVM in your kernel to continue"
|
|
||||||
ERROR_KVM_AMD="If you have an AMD CPU, you must enable KVM_AMD in"
|
|
||||||
ERROR_KVM_AMD+=" your kernel configuration."
|
|
||||||
ERROR_KVM_INTEL="If you have an Intel CPU, you must enable"
|
|
||||||
ERROR_KVM_INTEL+=" KVM_INTEL in your kernel configuration."
|
|
||||||
ERROR_TUN="You will need the Universal TUN/TAP driver compiled"
|
|
||||||
ERROR_TUN+=" into your kernel or loaded as a module to use the"
|
|
||||||
ERROR_TUN+=" virtual network device if using -net tap."
|
|
||||||
ERROR_BRIDGE="You will also need support for 802.1d"
|
|
||||||
ERROR_BRIDGE+=" Ethernet Bridging for some network configurations."
|
|
||||||
use vhost-net && CONFIG_CHECK+=" ~VHOST_NET"
|
|
||||||
ERROR_VHOST_NET="You must enable VHOST_NET to have vhost-net"
|
|
||||||
ERROR_VHOST_NET+=" support"
|
|
||||||
|
|
||||||
if use amd64 || use x86 || use amd64-linux || use x86-linux; then
|
|
||||||
CONFIG_CHECK+=" ~KVM_AMD ~KVM_INTEL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
use python && CONFIG_CHECK+=" ~DEBUG_FS"
|
|
||||||
ERROR_DEBUG_FS="debugFS support required for kvm_stat"
|
|
||||||
|
|
||||||
# Now do the actual checks setup above
|
|
||||||
check_extra_config
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -qs '/usr/bin/qemu-kvm' "${EROOT}"/etc/libvirt/qemu/*.xml; then
|
|
||||||
eerror "The kvm/qemu-kvm wrappers no longer exist, but your libvirt"
|
|
||||||
eerror "instances are still pointing to it. Please update your"
|
|
||||||
eerror "configs in /etc/libvirt/qemu/ to use the -enable-kvm flag"
|
|
||||||
eerror "and the right system binary (e.g. qemu-system-x86_64)."
|
|
||||||
die "update your virt configs to not use qemu-kvm"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_setup() {
|
|
||||||
enewgroup kvm 78
|
|
||||||
}
|
|
||||||
|
|
||||||
# Sanity check to make sure target lists are kept up-to-date.
|
|
||||||
check_targets() {
|
|
||||||
local var=$1 mak=$2
|
|
||||||
local detected sorted
|
|
||||||
|
|
||||||
pushd "${S}"/default-configs >/dev/null || die
|
|
||||||
|
|
||||||
# Force C locale until glibc is updated. #564936
|
|
||||||
detected=$(echo $(printf '%s\n' *-${mak}.mak | sed "s:-${mak}.mak::" | LC_COLLATE=C sort -u))
|
|
||||||
sorted=$(echo $(printf '%s\n' ${!var} | LC_COLLATE=C sort -u))
|
|
||||||
if [[ ${sorted} != "${detected}" ]] ; then
|
|
||||||
eerror "The ebuild needs to be kept in sync."
|
|
||||||
eerror "${var}: ${sorted}"
|
|
||||||
eerror "$(printf '%-*s' ${#var} configure): ${detected}"
|
|
||||||
die "sync ${var} to the list of targets"
|
|
||||||
fi
|
|
||||||
|
|
||||||
popd >/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_locales() {
|
|
||||||
# Make sure locale list is kept up-to-date.
|
|
||||||
local detected sorted
|
|
||||||
detected=$(echo $(cd po && printf '%s\n' *.po | grep -v messages.po | sed 's:.po$::' | sort -u))
|
|
||||||
sorted=$(echo $(printf '%s\n' ${PLOCALES} | sort -u))
|
|
||||||
if [[ ${sorted} != "${detected}" ]] ; then
|
|
||||||
eerror "The ebuild needs to be kept in sync."
|
|
||||||
eerror "PLOCALES: ${sorted}"
|
|
||||||
eerror " po/*.po: ${detected}"
|
|
||||||
die "sync PLOCALES"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Deal with selective install of locales.
|
|
||||||
if use nls ; then
|
|
||||||
# Delete locales the user does not want. #577814
|
|
||||||
rm_loc() { rm po/$1.po || die; }
|
|
||||||
l10n_for_each_disabled_locale_do rm_loc
|
|
||||||
else
|
|
||||||
# Cheap hack to disable gettext .mo generation.
|
|
||||||
rm -f po/*.po
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
src_prepare() {
|
|
||||||
check_targets IUSE_SOFTMMU_TARGETS softmmu
|
|
||||||
check_targets IUSE_USER_TARGETS linux-user
|
|
||||||
|
|
||||||
# Alter target makefiles to accept CFLAGS set via flag-o
|
|
||||||
sed -i -r \
|
|
||||||
-e 's/^(C|OP_C|HELPER_C)FLAGS=/\1FLAGS+=/' \
|
|
||||||
Makefile Makefile.target || die
|
|
||||||
|
|
||||||
epatch "${FILESDIR}"/qemu-2.5.0-cflags.patch
|
|
||||||
[[ -n ${BACKPORTS} ]] && \
|
|
||||||
EPATCH_FORCE=yes EPATCH_SUFFIX="patch" EPATCH_SOURCE="${S}/patches" \
|
|
||||||
epatch
|
|
||||||
|
|
||||||
epatch "${FILESDIR}"/${PN}-2.5.0-CVE-2016-2198.patch #573314
|
|
||||||
epatch "${FILESDIR}"/${PN}-2.5.0-rng-stack-corrupt-{0,1,2,3}.patch #576420
|
|
||||||
epatch "${FILESDIR}"/${PN}-2.5.1-stellaris_enet-overflow.patch #579614
|
|
||||||
epatch "${FILESDIR}"/${PN}-2.5.1-CVE-2016-4020.patch #580040
|
|
||||||
epatch "${FILESDIR}"/${PN}-2.5.1-CVE-2015-8558.patch #568246 #580426
|
|
||||||
epatch "${FILESDIR}"/${PN}-2.5.0-sysmacros.patch
|
|
||||||
epatch "${FILESDIR}"/${PN}-2.5.1-xfs-linux-headers.patch #577810
|
|
||||||
|
|
||||||
# Fix ld and objcopy being called directly
|
|
||||||
tc-export AR LD OBJCOPY
|
|
||||||
|
|
||||||
# Verbose builds
|
|
||||||
MAKEOPTS+=" V=1"
|
|
||||||
|
|
||||||
epatch_user
|
|
||||||
|
|
||||||
# Run after we've applied all patches.
|
|
||||||
handle_locales
|
|
||||||
}
|
|
||||||
|
|
||||||
##
|
|
||||||
# configures qemu based on the build directory and the build type
|
|
||||||
# we are using.
|
|
||||||
#
|
|
||||||
qemu_src_configure() {
|
|
||||||
debug-print-function ${FUNCNAME} "$@"
|
|
||||||
|
|
||||||
local buildtype=$1
|
|
||||||
local builddir="${S}/${buildtype}-build"
|
|
||||||
local static_flag="static-${buildtype}"
|
|
||||||
|
|
||||||
mkdir "${builddir}"
|
|
||||||
|
|
||||||
local conf_opts=(
|
|
||||||
--prefix=/usr
|
|
||||||
--sysconfdir=/etc
|
|
||||||
--libdir=/usr/$(get_libdir)
|
|
||||||
--docdir=/usr/share/doc/${PF}/html
|
|
||||||
--disable-bsd-user
|
|
||||||
--disable-guest-agent
|
|
||||||
--disable-strip
|
|
||||||
--disable-werror
|
|
||||||
# We support gnutls/nettle for crypto operations. It is possible
|
|
||||||
# to use gcrypt when gnutls/nettle are disabled (but not when they
|
|
||||||
# are enabled), but it's not really worth the hassle. Disable it
|
|
||||||
# all the time to avoid automatically detecting it. #568856
|
|
||||||
--disable-gcrypt
|
|
||||||
--python="${PYTHON}"
|
|
||||||
--cc="$(tc-getCC)"
|
|
||||||
--cxx="$(tc-getCXX)"
|
|
||||||
--host-cc="$(tc-getBUILD_CC)"
|
|
||||||
$(use_enable debug debug-info)
|
|
||||||
$(use_enable debug debug-tcg)
|
|
||||||
--enable-docs
|
|
||||||
$(use_enable tci tcg-interpreter)
|
|
||||||
$(use_enable xattr attr)
|
|
||||||
)
|
|
||||||
|
|
||||||
# Disable options not used by user targets as the default configure
|
|
||||||
# options will autoprobe and try to link in a bunch of unused junk.
|
|
||||||
conf_softmmu() {
|
|
||||||
if [[ ${buildtype} == "user" ]] ; then
|
|
||||||
echo "--disable-${2:-$1}"
|
|
||||||
else
|
|
||||||
use_enable "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
conf_opts+=(
|
|
||||||
$(conf_softmmu accessibility brlapi)
|
|
||||||
$(conf_softmmu aio linux-aio)
|
|
||||||
$(conf_softmmu bluetooth bluez)
|
|
||||||
$(conf_softmmu caps cap-ng)
|
|
||||||
$(conf_softmmu curl)
|
|
||||||
$(conf_softmmu fdt)
|
|
||||||
$(conf_softmmu glusterfs)
|
|
||||||
$(conf_softmmu gnutls)
|
|
||||||
$(conf_softmmu gnutls nettle)
|
|
||||||
$(conf_softmmu gtk)
|
|
||||||
$(conf_softmmu infiniband rdma)
|
|
||||||
$(conf_softmmu iscsi libiscsi)
|
|
||||||
$(conf_softmmu jpeg vnc-jpeg)
|
|
||||||
$(conf_softmmu kernel_linux kvm)
|
|
||||||
$(conf_softmmu lzo)
|
|
||||||
$(conf_softmmu ncurses curses)
|
|
||||||
$(conf_softmmu nfs libnfs)
|
|
||||||
$(conf_softmmu numa)
|
|
||||||
$(conf_softmmu opengl)
|
|
||||||
$(conf_softmmu png vnc-png)
|
|
||||||
$(conf_softmmu rbd)
|
|
||||||
$(conf_softmmu sasl vnc-sasl)
|
|
||||||
$(conf_softmmu sdl)
|
|
||||||
$(conf_softmmu seccomp)
|
|
||||||
$(conf_softmmu smartcard)
|
|
||||||
$(conf_softmmu snappy)
|
|
||||||
$(conf_softmmu spice)
|
|
||||||
$(conf_softmmu ssh libssh2)
|
|
||||||
$(conf_softmmu usb libusb)
|
|
||||||
$(conf_softmmu usbredir usb-redir)
|
|
||||||
$(conf_softmmu uuid)
|
|
||||||
$(conf_softmmu vde)
|
|
||||||
$(conf_softmmu vhost-net)
|
|
||||||
$(conf_softmmu virgl virglrenderer)
|
|
||||||
$(conf_softmmu virtfs)
|
|
||||||
$(conf_softmmu vnc)
|
|
||||||
$(conf_softmmu vte)
|
|
||||||
$(conf_softmmu xen)
|
|
||||||
$(conf_softmmu xen xen-pci-passthrough)
|
|
||||||
$(conf_softmmu xfs xfsctl)
|
|
||||||
)
|
|
||||||
|
|
||||||
case ${buildtype} in
|
|
||||||
user)
|
|
||||||
conf_opts+=(
|
|
||||||
--enable-linux-user
|
|
||||||
--disable-system
|
|
||||||
--disable-blobs
|
|
||||||
--disable-tools
|
|
||||||
)
|
|
||||||
;;
|
|
||||||
softmmu)
|
|
||||||
# audio options
|
|
||||||
local audio_opts="oss"
|
|
||||||
use alsa && audio_opts="alsa,${audio_opts}"
|
|
||||||
use sdl && audio_opts="sdl,${audio_opts}"
|
|
||||||
use pulseaudio && audio_opts="pa,${audio_opts}"
|
|
||||||
|
|
||||||
conf_opts+=(
|
|
||||||
--disable-linux-user
|
|
||||||
--enable-system
|
|
||||||
--with-system-pixman
|
|
||||||
--audio-drv-list="${audio_opts}"
|
|
||||||
)
|
|
||||||
use gtk && conf_opts+=( --with-gtkabi=$(usex gtk2 2.0 3.0) )
|
|
||||||
use sdl && conf_opts+=( --with-sdlabi=$(usex sdl2 2.0 1.2) )
|
|
||||||
;;
|
|
||||||
tools)
|
|
||||||
conf_opts+=(
|
|
||||||
--disable-linux-user
|
|
||||||
--disable-system
|
|
||||||
--disable-blobs
|
|
||||||
)
|
|
||||||
static_flag="static"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
local targets="${buildtype}_targets"
|
|
||||||
[[ -n ${targets} ]] && conf_opts+=( --target-list="${!targets}" )
|
|
||||||
|
|
||||||
# Add support for SystemTAP
|
|
||||||
use systemtap && conf_opts+=( --enable-trace-backend=dtrace )
|
|
||||||
|
|
||||||
# We always want to attempt to build with PIE support as it results
|
|
||||||
# in a more secure binary. But it doesn't work with static or if
|
|
||||||
# the current GCC doesn't have PIE support.
|
|
||||||
if use ${static_flag}; then
|
|
||||||
conf_opts+=( --static --disable-pie )
|
|
||||||
else
|
|
||||||
gcc-specs-pie && conf_opts+=( --enable-pie )
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "../configure ${conf_opts[*]}"
|
|
||||||
cd "${builddir}"
|
|
||||||
../configure "${conf_opts[@]}" || die "configure failed"
|
|
||||||
|
|
||||||
# FreeBSD's kernel does not support QEMU assigning/grabbing
|
|
||||||
# host USB devices yet
|
|
||||||
use kernel_FreeBSD && \
|
|
||||||
sed -i -E -e "s|^(HOST_USB=)bsd|\1stub|" "${S}"/config-host.mak
|
|
||||||
}
|
|
||||||
|
|
||||||
src_configure() {
|
|
||||||
local target
|
|
||||||
|
|
||||||
python_setup
|
|
||||||
|
|
||||||
softmmu_targets= softmmu_bins=()
|
|
||||||
user_targets= user_bins=()
|
|
||||||
|
|
||||||
for target in ${IUSE_SOFTMMU_TARGETS} ; do
|
|
||||||
if use "qemu_softmmu_targets_${target}"; then
|
|
||||||
softmmu_targets+=",${target}-softmmu"
|
|
||||||
softmmu_bins+=( "qemu-system-${target}" )
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
for target in ${IUSE_USER_TARGETS} ; do
|
|
||||||
if use "qemu_user_targets_${target}"; then
|
|
||||||
user_targets+=",${target}-linux-user"
|
|
||||||
user_bins+=( "qemu-${target}" )
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
softmmu_targets=${softmmu_targets#,}
|
|
||||||
user_targets=${user_targets#,}
|
|
||||||
|
|
||||||
[[ -n ${softmmu_targets} ]] && qemu_src_configure "softmmu"
|
|
||||||
[[ -n ${user_targets} ]] && qemu_src_configure "user"
|
|
||||||
[[ -z ${softmmu_targets}${user_targets} ]] && qemu_src_configure "tools"
|
|
||||||
}
|
|
||||||
|
|
||||||
src_compile() {
|
|
||||||
if [[ -n ${user_targets} ]]; then
|
|
||||||
cd "${S}/user-build"
|
|
||||||
default
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
cd "${S}/softmmu-build"
|
|
||||||
default
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z ${softmmu_targets}${user_targets} ]]; then
|
|
||||||
cd "${S}/tools-build"
|
|
||||||
default
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
src_test() {
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
cd "${S}/softmmu-build"
|
|
||||||
pax-mark m */qemu-system-* #515550
|
|
||||||
emake -j1 check
|
|
||||||
emake -j1 check-report.html
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
qemu_python_install() {
|
|
||||||
python_domodule "${S}/scripts/qmp/qmp.py"
|
|
||||||
|
|
||||||
python_doscript "${S}/scripts/kvm/kvm_stat"
|
|
||||||
python_doscript "${S}/scripts/kvm/vmxcap"
|
|
||||||
python_doscript "${S}/scripts/qmp/qmp-shell"
|
|
||||||
python_doscript "${S}/scripts/qmp/qemu-ga-client"
|
|
||||||
}
|
|
||||||
|
|
||||||
src_install() {
|
|
||||||
if [[ -n ${user_targets} ]]; then
|
|
||||||
cd "${S}/user-build"
|
|
||||||
emake DESTDIR="${ED}" install
|
|
||||||
|
|
||||||
# Install binfmt handler init script for user targets
|
|
||||||
newinitd "${FILESDIR}/qemu-binfmt.initd-r1" qemu-binfmt
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
cd "${S}/softmmu-build"
|
|
||||||
emake DESTDIR="${ED}" install
|
|
||||||
|
|
||||||
# This might not exist if the test failed. #512010
|
|
||||||
[[ -e check-report.html ]] && dohtml check-report.html
|
|
||||||
|
|
||||||
if use kernel_linux; then
|
|
||||||
udev_dorules "${FILESDIR}"/65-kvm.rules
|
|
||||||
fi
|
|
||||||
|
|
||||||
if use python; then
|
|
||||||
python_foreach_impl qemu_python_install
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z ${softmmu_targets}${user_targets} ]]; then
|
|
||||||
cd "${S}/tools-build"
|
|
||||||
emake DESTDIR="${ED}" install
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Disable mprotect on the qemu binaries as they use JITs to be fast #459348
|
|
||||||
pushd "${ED}"/usr/bin >/dev/null
|
|
||||||
pax-mark m "${softmmu_bins[@]}" "${user_bins[@]}"
|
|
||||||
popd >/dev/null
|
|
||||||
|
|
||||||
# Install config file example for qemu-bridge-helper
|
|
||||||
insinto "/etc/qemu"
|
|
||||||
doins "${FILESDIR}/bridge.conf"
|
|
||||||
|
|
||||||
# Remove the docdir placed qmp-commands.txt
|
|
||||||
mv "${ED}/usr/share/doc/${PF}/html/qmp-commands.txt" "${S}/docs/" || die
|
|
||||||
|
|
||||||
cd "${S}"
|
|
||||||
dodoc Changelog MAINTAINERS docs/specs/pci-ids.txt
|
|
||||||
newdoc pc-bios/README README.pc-bios
|
|
||||||
dodoc docs/qmp-*.txt
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]]; then
|
|
||||||
# Remove SeaBIOS since we're using the SeaBIOS packaged one
|
|
||||||
rm "${ED}/usr/share/qemu/bios.bin"
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../seabios/bios.bin /usr/share/qemu/bios.bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove vgabios since we're using the vgabios packaged one
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-cirrus.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-qxl.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-stdvga.bin"
|
|
||||||
rm "${ED}/usr/share/qemu/vgabios-vmware.bin"
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../vgabios/vgabios.bin /usr/share/qemu/vgabios.bin
|
|
||||||
dosym ../vgabios/vgabios-cirrus.bin /usr/share/qemu/vgabios-cirrus.bin
|
|
||||||
dosym ../vgabios/vgabios-qxl.bin /usr/share/qemu/vgabios-qxl.bin
|
|
||||||
dosym ../vgabios/vgabios-stdvga.bin /usr/share/qemu/vgabios-stdvga.bin
|
|
||||||
dosym ../vgabios/vgabios-vmware.bin /usr/share/qemu/vgabios-vmware.bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove sgabios since we're using the sgabios packaged one
|
|
||||||
rm "${ED}/usr/share/qemu/sgabios.bin"
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../sgabios/sgabios.bin /usr/share/qemu/sgabios.bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove iPXE since we're using the iPXE packaged one
|
|
||||||
rm "${ED}"/usr/share/qemu/pxe-*.rom
|
|
||||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
|
||||||
dosym ../ipxe/8086100e.rom /usr/share/qemu/pxe-e1000.rom
|
|
||||||
dosym ../ipxe/80861209.rom /usr/share/qemu/pxe-eepro100.rom
|
|
||||||
dosym ../ipxe/10500940.rom /usr/share/qemu/pxe-ne2k_pci.rom
|
|
||||||
dosym ../ipxe/10222000.rom /usr/share/qemu/pxe-pcnet.rom
|
|
||||||
dosym ../ipxe/10ec8139.rom /usr/share/qemu/pxe-rtl8139.rom
|
|
||||||
dosym ../ipxe/1af41000.rom /usr/share/qemu/pxe-virtio.rom
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
qemu_support_kvm && readme.gentoo_create_doc
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_postinst() {
|
|
||||||
if qemu_support_kvm; then
|
|
||||||
readme.gentoo_print_elog
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n ${softmmu_targets} ]] && use kernel_linux; then
|
|
||||||
udev_reload
|
|
||||||
fi
|
|
||||||
|
|
||||||
fcaps cap_net_admin /usr/libexec/qemu-bridge-helper
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_info() {
|
|
||||||
echo "Using:"
|
|
||||||
echo " $(best_version app-emulation/spice-protocol)"
|
|
||||||
echo " $(best_version sys-firmware/ipxe)"
|
|
||||||
echo " $(best_version sys-firmware/seabios)"
|
|
||||||
if has_version 'sys-firmware/seabios[binary]'; then
|
|
||||||
echo " USE=binary"
|
|
||||||
else
|
|
||||||
echo " USE=''"
|
|
||||||
fi
|
|
||||||
echo " $(best_version sys-firmware/vgabios)"
|
|
||||||
}
|
|
@ -1,12 +1,13 @@
|
|||||||
# Copyright 1999-2016 Gentoo Foundation
|
# Copyright 1999-2016 Gentoo Foundation
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
# $Id$
|
||||||
|
|
||||||
EAPI="5"
|
EAPI="5"
|
||||||
|
|
||||||
PYTHON_COMPAT=( python2_7 )
|
PYTHON_COMPAT=( python2_7 )
|
||||||
PYTHON_REQ_USE="ncurses,readline"
|
PYTHON_REQ_USE="ncurses,readline"
|
||||||
|
|
||||||
PLOCALES="de_DE fr_FR hu it tr zh_CN"
|
PLOCALES="bg de_DE fr_FR hu it tr zh_CN"
|
||||||
|
|
||||||
inherit eutils flag-o-matic linux-info toolchain-funcs multilib python-r1 \
|
inherit eutils flag-o-matic linux-info toolchain-funcs multilib python-r1 \
|
||||||
user udev fcaps readme.gentoo pax-utils l10n
|
user udev fcaps readme.gentoo pax-utils l10n
|
||||||
@ -17,7 +18,7 @@ if [[ ${PV} = *9999* ]]; then
|
|||||||
SRC_URI=""
|
SRC_URI=""
|
||||||
else
|
else
|
||||||
SRC_URI="http://wiki.qemu-project.org/download/${P}.tar.bz2"
|
SRC_URI="http://wiki.qemu-project.org/download/${P}.tar.bz2"
|
||||||
KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86 ~x86-fbsd"
|
KEYWORDS="amd64 ~arm64 ~ppc ~ppc64 x86 ~x86-fbsd"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
|
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
|
||||||
@ -25,7 +26,7 @@ HOMEPAGE="http://www.qemu.org http://www.linux-kvm.org"
|
|||||||
|
|
||||||
LICENSE="GPL-2 LGPL-2 BSD-2"
|
LICENSE="GPL-2 LGPL-2 BSD-2"
|
||||||
SLOT="0"
|
SLOT="0"
|
||||||
IUSE="accessibility +aio alsa bluetooth +caps +curl debug +fdt glusterfs \
|
IUSE="accessibility +aio alsa bluetooth bzip2 +caps +curl debug +fdt glusterfs \
|
||||||
gnutls gtk gtk2 infiniband iscsi +jpeg \
|
gnutls gtk gtk2 infiniband iscsi +jpeg \
|
||||||
kernel_linux kernel_FreeBSD lzo ncurses nfs nls numa opengl +pin-upstream-blobs
|
kernel_linux kernel_FreeBSD lzo ncurses nfs nls numa opengl +pin-upstream-blobs
|
||||||
+png pulseaudio python \
|
+png pulseaudio python \
|
||||||
@ -65,8 +66,12 @@ REQUIRED_USE="${PYTHON_REQUIRED_USE}
|
|||||||
#
|
#
|
||||||
# Older versions of gnutls are supported, but it's simpler to just require
|
# Older versions of gnutls are supported, but it's simpler to just require
|
||||||
# the latest versions. This is also why we require nettle.
|
# the latest versions. This is also why we require nettle.
|
||||||
|
#
|
||||||
|
# TODO: Split out tools deps into another var. e.g. bzip2 is only used by
|
||||||
|
# system binaries and tools, not user binaries.
|
||||||
COMMON_LIB_DEPEND=">=dev-libs/glib-2.0[static-libs(+)]
|
COMMON_LIB_DEPEND=">=dev-libs/glib-2.0[static-libs(+)]
|
||||||
sys-libs/zlib[static-libs(+)]
|
sys-libs/zlib[static-libs(+)]
|
||||||
|
bzip2? ( app-arch/bzip2[static-libs(+)] )
|
||||||
xattr? ( sys-apps/attr[static-libs(+)] )"
|
xattr? ( sys-apps/attr[static-libs(+)] )"
|
||||||
SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
|
SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
|
||||||
>=x11-libs/pixman-0.28.0[static-libs(+)]
|
>=x11-libs/pixman-0.28.0[static-libs(+)]
|
||||||
@ -92,7 +97,7 @@ SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
|
|||||||
vte? ( x11-libs/vte:2.90 )
|
vte? ( x11-libs/vte:2.90 )
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
infiniband? ( sys-infiniband/librdmacm:=[static-libs(+)] )
|
infiniband? ( sys-fabric/librdmacm:=[static-libs(+)] )
|
||||||
iscsi? ( net-libs/libiscsi )
|
iscsi? ( net-libs/libiscsi )
|
||||||
jpeg? ( virtual/jpeg:0=[static-libs(+)] )
|
jpeg? ( virtual/jpeg:0=[static-libs(+)] )
|
||||||
lzo? ( dev-libs/lzo:2[static-libs(+)] )
|
lzo? ( dev-libs/lzo:2[static-libs(+)] )
|
||||||
@ -329,8 +334,7 @@ src_prepare() {
|
|||||||
|
|
||||||
epatch "${FILESDIR}"/${PN}-2.5.0-cflags.patch
|
epatch "${FILESDIR}"/${PN}-2.5.0-cflags.patch
|
||||||
epatch "${FILESDIR}"/${PN}-2.5.0-sysmacros.patch
|
epatch "${FILESDIR}"/${PN}-2.5.0-sysmacros.patch
|
||||||
epatch "${FILESDIR}"/${PN}-2.6.0-crypto-static.patch
|
epatch "${FILESDIR}"/${P}-CVE-2016-6836.patch
|
||||||
|
|
||||||
# Fix ld and objcopy being called directly
|
# Fix ld and objcopy being called directly
|
||||||
tc-export AR LD OBJCOPY
|
tc-export AR LD OBJCOPY
|
||||||
|
|
||||||
@ -393,6 +397,7 @@ qemu_src_configure() {
|
|||||||
conf_opts+=(
|
conf_opts+=(
|
||||||
$(conf_softmmu accessibility brlapi)
|
$(conf_softmmu accessibility brlapi)
|
||||||
$(conf_softmmu aio linux-aio)
|
$(conf_softmmu aio linux-aio)
|
||||||
|
$(conf_softmmu bzip2)
|
||||||
$(conf_softmmu bluetooth bluez)
|
$(conf_softmmu bluetooth bluez)
|
||||||
$(conf_softmmu caps cap-ng)
|
$(conf_softmmu caps cap-ng)
|
||||||
$(conf_softmmu curl)
|
$(conf_softmmu curl)
|
||||||
@ -463,6 +468,7 @@ qemu_src_configure() {
|
|||||||
--disable-linux-user
|
--disable-linux-user
|
||||||
--disable-system
|
--disable-system
|
||||||
--disable-blobs
|
--disable-blobs
|
||||||
|
$(use_enable bzip2)
|
||||||
)
|
)
|
||||||
static_flag="static"
|
static_flag="static"
|
||||||
;;
|
;;
|
||||||
@ -552,7 +558,6 @@ src_test() {
|
|||||||
qemu_python_install() {
|
qemu_python_install() {
|
||||||
python_domodule "${S}/scripts/qmp/qmp.py"
|
python_domodule "${S}/scripts/qmp/qmp.py"
|
||||||
|
|
||||||
python_doscript "${S}/scripts/kvm/kvm_stat"
|
|
||||||
python_doscript "${S}/scripts/kvm/vmxcap"
|
python_doscript "${S}/scripts/kvm/vmxcap"
|
||||||
python_doscript "${S}/scripts/qmp/qmp-shell"
|
python_doscript "${S}/scripts/qmp/qmp-shell"
|
||||||
python_doscript "${S}/scripts/qmp/qemu-ga-client"
|
python_doscript "${S}/scripts/qmp/qemu-ga-client"
|
@ -6,7 +6,7 @@ EAPI="5"
|
|||||||
PYTHON_COMPAT=( python2_7 )
|
PYTHON_COMPAT=( python2_7 )
|
||||||
PYTHON_REQ_USE="ncurses,readline"
|
PYTHON_REQ_USE="ncurses,readline"
|
||||||
|
|
||||||
PLOCALES="de_DE fr_FR hu it tr zh_CN"
|
PLOCALES="bg de_DE fr_FR hu it tr zh_CN"
|
||||||
|
|
||||||
inherit eutils flag-o-matic linux-info toolchain-funcs multilib python-r1 \
|
inherit eutils flag-o-matic linux-info toolchain-funcs multilib python-r1 \
|
||||||
user udev fcaps readme.gentoo pax-utils l10n
|
user udev fcaps readme.gentoo pax-utils l10n
|
||||||
@ -25,7 +25,7 @@ HOMEPAGE="http://www.qemu.org http://www.linux-kvm.org"
|
|||||||
|
|
||||||
LICENSE="GPL-2 LGPL-2 BSD-2"
|
LICENSE="GPL-2 LGPL-2 BSD-2"
|
||||||
SLOT="0"
|
SLOT="0"
|
||||||
IUSE="accessibility +aio alsa bluetooth +caps +curl debug +fdt glusterfs \
|
IUSE="accessibility +aio alsa bluetooth bzip2 +caps +curl debug +fdt glusterfs \
|
||||||
gnutls gtk gtk2 infiniband iscsi +jpeg \
|
gnutls gtk gtk2 infiniband iscsi +jpeg \
|
||||||
kernel_linux kernel_FreeBSD lzo ncurses nfs nls numa opengl +pin-upstream-blobs
|
kernel_linux kernel_FreeBSD lzo ncurses nfs nls numa opengl +pin-upstream-blobs
|
||||||
+png pulseaudio python \
|
+png pulseaudio python \
|
||||||
@ -65,8 +65,12 @@ REQUIRED_USE="${PYTHON_REQUIRED_USE}
|
|||||||
#
|
#
|
||||||
# Older versions of gnutls are supported, but it's simpler to just require
|
# Older versions of gnutls are supported, but it's simpler to just require
|
||||||
# the latest versions. This is also why we require nettle.
|
# the latest versions. This is also why we require nettle.
|
||||||
|
#
|
||||||
|
# TODO: Split out tools deps into another var. e.g. bzip2 is only used by
|
||||||
|
# system binaries and tools, not user binaries.
|
||||||
COMMON_LIB_DEPEND=">=dev-libs/glib-2.0[static-libs(+)]
|
COMMON_LIB_DEPEND=">=dev-libs/glib-2.0[static-libs(+)]
|
||||||
sys-libs/zlib[static-libs(+)]
|
sys-libs/zlib[static-libs(+)]
|
||||||
|
bzip2? ( app-arch/bzip2[static-libs(+)] )
|
||||||
xattr? ( sys-apps/attr[static-libs(+)] )"
|
xattr? ( sys-apps/attr[static-libs(+)] )"
|
||||||
SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
|
SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
|
||||||
>=x11-libs/pixman-0.28.0[static-libs(+)]
|
>=x11-libs/pixman-0.28.0[static-libs(+)]
|
||||||
@ -92,7 +96,7 @@ SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
|
|||||||
vte? ( x11-libs/vte:2.90 )
|
vte? ( x11-libs/vte:2.90 )
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
infiniband? ( sys-infiniband/librdmacm:=[static-libs(+)] )
|
infiniband? ( sys-fabric/librdmacm:=[static-libs(+)] )
|
||||||
iscsi? ( net-libs/libiscsi )
|
iscsi? ( net-libs/libiscsi )
|
||||||
jpeg? ( virtual/jpeg:0=[static-libs(+)] )
|
jpeg? ( virtual/jpeg:0=[static-libs(+)] )
|
||||||
lzo? ( dev-libs/lzo:2[static-libs(+)] )
|
lzo? ( dev-libs/lzo:2[static-libs(+)] )
|
||||||
@ -329,7 +333,6 @@ src_prepare() {
|
|||||||
|
|
||||||
epatch "${FILESDIR}"/${PN}-2.5.0-cflags.patch
|
epatch "${FILESDIR}"/${PN}-2.5.0-cflags.patch
|
||||||
epatch "${FILESDIR}"/${PN}-2.5.0-sysmacros.patch
|
epatch "${FILESDIR}"/${PN}-2.5.0-sysmacros.patch
|
||||||
epatch "${FILESDIR}"/${PN}-2.6.0-crypto-static.patch
|
|
||||||
|
|
||||||
# Fix ld and objcopy being called directly
|
# Fix ld and objcopy being called directly
|
||||||
tc-export AR LD OBJCOPY
|
tc-export AR LD OBJCOPY
|
||||||
@ -393,6 +396,7 @@ qemu_src_configure() {
|
|||||||
conf_opts+=(
|
conf_opts+=(
|
||||||
$(conf_softmmu accessibility brlapi)
|
$(conf_softmmu accessibility brlapi)
|
||||||
$(conf_softmmu aio linux-aio)
|
$(conf_softmmu aio linux-aio)
|
||||||
|
$(conf_softmmu bzip2)
|
||||||
$(conf_softmmu bluetooth bluez)
|
$(conf_softmmu bluetooth bluez)
|
||||||
$(conf_softmmu caps cap-ng)
|
$(conf_softmmu caps cap-ng)
|
||||||
$(conf_softmmu curl)
|
$(conf_softmmu curl)
|
||||||
@ -463,6 +467,7 @@ qemu_src_configure() {
|
|||||||
--disable-linux-user
|
--disable-linux-user
|
||||||
--disable-system
|
--disable-system
|
||||||
--disable-blobs
|
--disable-blobs
|
||||||
|
$(use_enable bzip2)
|
||||||
)
|
)
|
||||||
static_flag="static"
|
static_flag="static"
|
||||||
;;
|
;;
|
||||||
@ -552,7 +557,6 @@ src_test() {
|
|||||||
qemu_python_install() {
|
qemu_python_install() {
|
||||||
python_domodule "${S}/scripts/qmp/qmp.py"
|
python_domodule "${S}/scripts/qmp/qmp.py"
|
||||||
|
|
||||||
python_doscript "${S}/scripts/kvm/kvm_stat"
|
|
||||||
python_doscript "${S}/scripts/kvm/vmxcap"
|
python_doscript "${S}/scripts/kvm/vmxcap"
|
||||||
python_doscript "${S}/scripts/qmp/qmp-shell"
|
python_doscript "${S}/scripts/qmp/qmp-shell"
|
||||||
python_doscript "${S}/scripts/qmp/qemu-ga-client"
|
python_doscript "${S}/scripts/qmp/qemu-ga-client"
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
14
sdk_container/src/third_party/portage-stable/metadata/md5-cache/app-emulation/qemu-2.7.0
vendored
Normal file
14
sdk_container/src/third_party/portage-stable/metadata/md5-cache/app-emulation/qemu-2.7.0
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user