diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
commit | 4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch) | |
tree | ba5f07bf3f9d22d82e54a462313f5d244036c768 /app-emulation/vmware-modules |
reinit the tree, so we can have metadata
Diffstat (limited to 'app-emulation/vmware-modules')
123 files changed, 6519 insertions, 0 deletions
diff --git a/app-emulation/vmware-modules/Manifest b/app-emulation/vmware-modules/Manifest new file mode 100644 index 000000000000..4d0435988a8e --- /dev/null +++ b/app-emulation/vmware-modules/Manifest @@ -0,0 +1,124 @@ +AUX 271-3.10-00-userns.patch 1690 SHA256 15f290e50f179ef3dcd4737632971b5f0bd3f2c252a7188dc23244d24e45c3d9 SHA512 996aa6933afe7dea1fe4eb7f152c5eb5fff7fe64d56f257593a03b7dd1b2e9a0f702e5b14b51721d938aa389590e5b777ac5abfd514f410a9568e1c34e408908 WHIRLPOOL 70c652d7e0fcf6b8317aba9cbc1248c19bc3282cbd44c3791871c1819533ad877f31e54df6b03aadbfde2d4613f31c02cdd15d2791b6a769ff39d36a59668d75 +AUX 271-3.10-01-create_proc_entry.patch 1120 SHA256 7ac4f33f5a9433c1a9af4066113eb993359cf1d14e9c1a34fb29661791979426 SHA512 4c44be4ccfd827a185e2c6d302879f74d1c8054871b1b31770436bc5865e9feefa3bb4f20f3d1f5914517697e448d7d30e7afa396c310c56ae376774a98a0931 WHIRLPOOL 463d3bdc718b11f3b58511362d9246cc4262c6fb9cfb1a7c12d73e02b905723333e5a99351f5c3dc0f8a3db980da52684559fee09c4be5ae8a99e4d22d5904eb +AUX 271-3.10-02-getname.patch 729 SHA256 59864b8c33b1b21d816bb2405232d4df1dadc4e969970f704520d01309e8ea2e SHA512 67aaf42b3f7b9602ea3e84ca2f07251ef0ffc2eb2eee2919410325b9ff9ddd3629e5af2eedc91a3f6f409f17b8f69c56f06d8e24573a7e12070fb52ca96c8522 WHIRLPOOL 4348ec879efb941042f11791cc8dafa6b560cf314dd97e407d8b63833043451a7a14c5215b3178afae506566f1ab5f3e499d0ef7d9de00dc44a523e2d597c85f +AUX 271-3.10-03-deprecated.patch 3859 SHA256 5ae46a919ce41b0ca45489ceb648d0b91a93738cce674a82992d4ad90808f01d SHA512 750c40d130068515193c21120a2428a10e28bb4bd6e8aa82bd86c878dea4af3f3a989eef19e4a06e5c513250cb37f2c4f825df6d0b1ec9d9ddd3e1e2f3deedf8 WHIRLPOOL 23855e04d42f0ea534a0bb9afe34faf8aedfec88c1f3a0d89f29e16a7caeb66f8038d20f291fb4a5f7486421fc1410fe94528b9bcc09e1d0bfb7f7760beb0654 +AUX 271-3.10-04-unused-typedef.patch 6888 SHA256 bb028ec8ae615bec70dfa2c7f0716777dc29395d43b8b1486de0e42646dffcb4 SHA512 fbeee472486c64c2c8ceaf97a4243880326d3f64a71098b53a970d769713e7efbc02a94f8610302aac0971dc0461d2fee358360404373aac49043576ce16082e WHIRLPOOL cc2cd6b7530a746557b4a96e9beb95ec5eef5cd2bfdc33351becd192164aa20b73a0cbd7ecd6975097e678a62c256b9a8e0377d7a117882d2c6059d69712e2b0 +AUX 271-3.10-05-dentry.patch 1265 SHA256 4ed8fbf240e8263ccf9ec85de3a6a42df2c174044dff8b7213b4b5e74f731e71 SHA512 7d7729667d084cb8c89eed5e085efe818e2039f3869667081a0bb0f837c96f395f3d3177b88d2cd38e382c3842f6f2e614a470778dca0f34307972d3732e1d64 WHIRLPOOL 2baf16bfa96de468f87ba430e13272b89d75f85fd3f126ed2f0a7a30da9f455db07352d38dc45db994d284d7529bdeabd3d7ec04972cfb5fc1b698306eaa12dd +AUX 271-3.10-06-inode.patch 1489 SHA256 d4db76ed1dc40386f4bb59886996e22c677629f1179a139e370cbe8b7859d1a7 SHA512 7c425186a21fd8546b3c2f51d18ff24ce999464d31e97326ddaf9ef134f1efcbc911ac538d9fa2c41b36569a5421633048bdcaf82db4d577dac28f04e1c7f413 WHIRLPOOL df57492be3c7eff7d35d026af595ade477c32c7893f73da61958579af6e97e7401d5f9bf9324ed374000f99a2999fa664be0ab7ec89f76b1378124ffe3efb672 +AUX 271-3.10-07-hub.patch 1044 SHA256 c842a7aee5da7e25a5162d209748f6d019e5869f201bc8e7df1768f937c73486 SHA512 3893ffffee22c883a2845082035a85e6c6c4593722a43f80866ab34c687df18681077fbb45770e1ee50514e8ae1121931c60fb878ff2ed5b8e5b99f3fdeb424d WHIRLPOOL a1c55f16f6cebe7dfa29545e4fad7dbd32bcb53cc89c31699a8d99f14934a0affcd4cf7d9ce123cf91316a8f147a2c21bb72106f028260ca3a4804d60cee7aac +AUX 271-3.10.0.patch 23418 SHA256 346d1ca7705dd5f791e0d69cdbb346ebd31f2f4f11f3989c23d1a89e11e1b91b SHA512 878678f951b05137deb1656ccd7fd3185887f02649f2a223ef60ccecdedc7aeda6ca08ddd108e379734b5e04ef11d326b20e45c069c53cc52b7a6869b8db6410 WHIRLPOOL 196515870addefcd6857dd3e44a04b8a6c0da39185e7cea7826f1498f5a4c17997ebe43aada7f22a1c3fa94302576ced2a7ed36e2452de00711256c83f7fa41e +AUX 271-3.11-00-readdir.patch 1063 SHA256 60a33321ef47dc99713677f639c49f46ff7a7e34aeb226eb8d234a4d2ab19ab2 SHA512 ab63a21bf40f5ac02dfafdf353e7b5a139e3e0f4e935b45562526479bf196547da10e2608a368f1cb62a743f969b38f5223679f967b23e13a555f8f38ec7842c WHIRLPOOL 3c9b75aa95656e550620a15cd760cb4b23b22d1c6b93e1b0be2d077d40bc506134fd53d4b5a6ce48ad2723339a97054b1b0d958d38662180ffa2c262f15e648b +AUX 271-3.11-01-filldir.patch 1619 SHA256 5de58aa1dcd7b9566e32fd8eedac9bec3135a8da20e8bcc6fd3887bba92c4e5c SHA512 779d22bd1184507ec2a06466524b62c33e3bfea7c1c1a41a9a2c96797a6518f3a0159915ff75e9b18f8323e1007a09fc13f83da3ab9ee4b621544643028d0c49 WHIRLPOOL 3c72b7695cf593d757bb6a01ec94e66268aeb1dd8b52d7bb0fcbe7c537707240ac31a1095341887cbf344d77a150edba33cef946baca9b84999c63e6dc708ec6 +AUX 271-3.13-00-vmnet.patch 1297 SHA256 bfee163a4c275bfa67070f2e3488a1346c611851a7e3d7a59fc23967a818e5d0 SHA512 fe9e88748f282969281224753bec10a6b738d88fcd99b0ba9b1c0df3fa109f7d49369edffe57f7f8f96363a186eea09382f328ce51f69c15ee0de477c444f0e5 WHIRLPOOL 2e9e3545b0dc126697e43d149fd9e4e5808204104a8ff461fe627f1cd7a02d1ef3b5f5bbf9fcfce5134743d2377ee33211bc137df0d33385a719606ba8632303 +AUX 271-3.15-00-readlink.patch 544 SHA256 eeeefdd94c2c78adf0ae27c4f62ff612c53ef81c2b4bf1cb8b2b333f72a2de99 SHA512 2a238442f04685dc5daa2dfdcd7fbac8f46e954e90f604c681bfcae59c4a1c2b35d8311fb3560d5c8410207a691aac48da03665556429b54b493a7cda2e16a21 WHIRLPOOL d145b0a8879d365c0d861fccd0f3ec75b5db6fcd7f69dda5d9ab14285f2f65078123a6c9ade760513b5a77707f0ec8d3984e3881c4b546d0487edff353a5962e +AUX 271-3.15-01-vsock.patch 1419 SHA256 7e12baa018536c6a2b4296d0167bd9fb459fcb3950857314c9491ebf06d572b2 SHA512 34fb51223102f96b9e94d2536d1397ce2d11cc5342d80f0a8797d3309326e2f9f2b3b675bf9180bb0eb915abcabf7fdab60619f5992956c4ee7bf9804a567626 WHIRLPOOL ae3ba7caf99468182363ed9928b1b6c8cbe0d771170b0061924cc55e395e1d2a017090f3aee62fa53cc6f07a17b2446805173494b4bd3283153285f1dcdce624 +AUX 271-3.17-00-netdev.patch 721 SHA256 1da176c9a3cff1a04d0424abd7ab090696a086021e73ca143d50f69252c86b00 SHA512 3b3e79e2afe9d19315de94bd021c73a26cb7d935a1bd5f771dc0eed8100c14522d4c07a58e4b1edea42ff8522a3a2139f55de7bd048e0067fddf6e8cb1aa2262 WHIRLPOOL c3cea09406deb050a42c1ebea0ecc01d3cc98e02794ead3caf26791df67785f0ec7bda621dc51a58ec1a38a7fd472c82e96c7c51d4918c96d44ff2c7129f55c6 +AUX 271-3.19-00-vmnet-warning.patch 592 SHA256 4a91d5a8d07cf0940eb2d247329485ba8722c2da13ec536ee3a5a4ca38a08f5e SHA512 5f75278a842d0579e37d61eae1ba5a031c7071c497a8f09376652904862669cf613ae34ca5f1adb43176724aed9c254057d4cbd1632f2d8c56a75e0d42c330f0 WHIRLPOOL 757219e58c63c1152abc5872c02c2773f3c3c0bdfe48f6e3794600894424453fcd5c467128da951ce212d26b7140f7fe550c106905d6fa97a9700d61dec0af79 +AUX 271-3.19-01-vmblock-path.patch 2943 SHA256 89467ebf6e8d938da494b32ff0bfd774d9dbc2107e5712e0d039f4c9d438fcff SHA512 356cdaba3ad69fcd3e517a3f6edc561684a8757fd8a1e5bf75ce990cdac89bef68d56adf5817cd8577875f182018f354f4aff4202684057a0ec7273137ee0ef6 WHIRLPOOL 753baa0392a7ee61614780f35df8164de5b865bfdbdf185b4c8b6e029d7c294c227ea14fc1231a4e0977638533920f58a0f50c5a3c28c987bb651802084de32b +AUX 271-3.19-02-vmci.patch 1197 SHA256 6b9e095e0d50b13ddc176f117e417c5b176fbd5fb4017fdca4f73b0e7f078aab SHA512 aa3fd318d56b263ea39a7d1822f2bf6b8f2bcbe096037a5405adfcb0a4ca02d759d639943ade68cb4b45f8f44419219844b1171cf8bd6c74f71b1cdbc86aceb6 WHIRLPOOL b231fa54d26c39cf66de9574099441dcda585f174855c44c418de8c891cde35c78daba0d094eebb0297b14ddad0fa2a0e2ae5c67000e43fd67711888d67dc89b +AUX 271-3.19-03-vmnet.patch 923 SHA256 f6a8ba5fd7e1a321ee5eedd5b521860d98452dee9aa935de45cd59d2966509ad SHA512 499131c6b85beb1537957083a8db0f378958bc919da4a4ff96c7aa426f460740cb1ad8f855647fbb682b3a89bacc79492e8de1689b38f2260f3d2f24e69995ae WHIRLPOOL b0fbece3b3e8454d41c33b8f901ede5f8cf3638faa61b9bf7400ee63dbc21d857753761838cf8b2a20ce3a56899d16456e00856da76b0c2e4f76263d5bf25770 +AUX 271-3.19-04-vsock.patch 571 SHA256 01964e884d427687ea27843c42d47f581503390ed71501bcca629360927d8f24 SHA512 5f1c56150192ea43480879f7b1686e065b7488b3cf70491024c78c0037e0365500d00d413a1c1aadd7f02dbc9a0f458c740aa74a814c73126d7f3c2df1140c5d WHIRLPOOL 16ebc5c2ac8da04c1cb41c74470ded344bf820c8486b06f062e77e3e707a4fa800a6127889919a979d86a656bcfbe76015f159c34d39401d970eeaba452688d2 +AUX 271-3.19-05-vsock.patch 602 SHA256 8ad74f7573ebdae27c446db708c7ca13f03a965e608836242d7c919f14dd1ba2 SHA512 c1684b6312b67849c0e2a2abafe9ebeaa6f46cdd8c5aeb37e1d1c3bf1db45134ab59254f36f84a8a6c366bfe6631ee7b8e75d7a0bf431c6d9570568cb61cc2ee WHIRLPOOL 4ede77589267d714e4c9eb6fc358b7856745b2d1610deca57a40a329d9ae0f1c96b728983069af556d966bfa5ae009a3cd6706ae83729fe538382ed3730926b3 +AUX 271-3.19-06-vmci_qpair.patch 1061 SHA256 2804d70faabdbee64647eb53e62ad967bbbf79cd5f1734154eed5077d63fcf77 SHA512 ab3ec8b074265c51bdfbdf4324753564fedace64267040b5fdeedceeab5823a74868c6ffc06cfbf4d0e503192efda4c63d8b68e17f1abd5a4defa926728a652e WHIRLPOOL 0eb891718b3bd7534062ff0f26f68281d05681fd91d567d7deb477e925c2823c908bbf897244ca6abdfb53ddbac620c165eddb876514a1c5fb1098361133f685 +AUX 271-apic.patch 302 SHA256 60e7df881281fedcabe9ea4427b324b5e1142a1a2b6ab5236ac0843bd1051048 SHA512 003240043e5875d8c6425c146e708eb3c3d8be7fa48a2ac42b3071f00dafdbd51f7796d6f884298b135adccaf8a3eac32fd82b34a436a724da125dac5f6261d7 WHIRLPOOL 4707d0ddd532d5ec27ee2ba3d0fb25c1972bbc9f958b4b89f2f5cceffdf955ba88cd1be0cde046aa5fa688d52faeab5ccf3f03bbccb3e9b088abc37ad579e8e0 +AUX 271-filldir.patch 2485 SHA256 539e8940b47cb7a5f39ab2ba6f18ceb290a2627c81bd6daead6e5850aec02a63 SHA512 e5f85031f459a79a0f64b15224ae8c1ef23892ef159a37955b9c2a2b13ab6e892325a5aeedd4fd2969da3b187cedcaea8fc41540638d02cf56dce2d3e9194937 WHIRLPOOL a455300e72624e4f9c8d3dc79fa5c3ab1b288e79a04483503006a61d44bc83bf14faf0bfa753f82a70dbd23f870b2f6bfe1b06d23792eb1522a7265799ce03eb +AUX 271-hardened.patch 5052 SHA256 191cf892bfb9a6288d110191de824bf6243bc6f48f1e62ab49f3582c7ade5af6 SHA512 52dcca8d9f689f0a0d0ca369c0c7ce0d177de3529d2d1325330eb5a9e940a55e8930bbbe7374793bdf29cbdefac9727e9eb21d00f81ad4f5eddba3a51597b7a5 WHIRLPOOL 539731bc36f3e292403f55d74c353deeb28baa312f726b36d2a6060adf3483dfa2ed011baf93eff941fa754ef62f4d6da86868c40550ee2292c4a711e061bde0 +AUX 271-makefile-include.patch 2501 SHA256 208121855fe18ecb279ff40f2833463559363461c2170d32c17040211a01f169 SHA512 c498c025c7eb025f6554cee683242dd73e4a284e4b28c95b75339f4f4a912a156acc1845881fbd78bf399c2092af7413f5d6c4782cd066527ea275518b411c1d WHIRLPOOL e03a6d7139ab7b309e0ca1527cb8b52a8f84f5f5d997a510305d2a6ccdd39f33b18c7276df8ac78d92d2a17a66236f582baaa5e374069d3912090544908a0338 +AUX 271-makefile-kernel-dir.patch 2153 SHA256 d76b1028d21b804836e36478d243cd7914435a34f3fe014058e0a9cc7a020653 SHA512 f18339dc8ac4c864b0c2fb234ad2db8f4638a5cd28e8fd11b5593c82107925b41b42e0d0acac52232a373780d79a3e397f70886534cdf889055e86cfda718f62 WHIRLPOOL 70c869bf4efab6843856addd0c5f5a295ed2fe38f9fc2a8ab2ca55523cd39cb92018d6bd0dac75658fa0f5260962c98f0bbd001593f3f11c2d204c693061c5b6 +AUX 271-netdevice.patch 833 SHA256 8f17ce379abda45a8f94e1dcd6e43367273f97f76edd41f9941beb3b1730a751 SHA512 b4ec7c1694968a1843f10e8bfe0dbfdc99bd3b5fc1391456d91a3648b848b82df681a0748d967afa19e728c4d19b79b6a3cb9fd3e15a52a5cab048a6ac9b06a9 WHIRLPOOL b0cabe2ec1b8ca52d427c02593d6057c98d4ed00c578d006de65460138c37a5be76a7938d85f5a35eb6f49ee5e34065ce62b60a51b0ccf021639a59b27aeac8a +AUX 271-putname.patch 394 SHA256 b8103d3c72c24696e974e49dcdcdf2d5a2b2c2fdd5f6ca050842b840e906ba77 SHA512 86a0a0ec3ff225940190056e85d498fd7eb260bcc52882fea8921398f572bc46f56c3f2941d3f3d1587a07bc72c8885cbddacf632d2b5fed7d8c9d284399d6d8 WHIRLPOOL e1e8afcafe00131fd6d90b61e5d911da69d7c26b7fd19be085eb5cfd23c2ab19784ae5ddf18928f9cc4a178d87c6d51e8de27dfab8507e2d57fc18868fde9f45 +AUX 271-vfsfollowlink.patch 1219 SHA256 b195f6492a172f682d55fb506ba02c473fd924bb47dc0d1359dd5de163b4da22 SHA512 b675f68175be0b7003d2f80c54dce05a064f8d5bd8744d40571d3d1e0153c01f909e37e0403e53f23a6d61383a9b054c40a2a9ffa95dd765eeffb0c7e739ff1d WHIRLPOOL 3e108ee29c2050029c6079f652e2670529a9f6b220524db214c7dadba3dcaef8fa1ab261f0e10ffa7506456d9f3cccc954bf6a82960e78ebd120c1eb2aac68e8 +AUX 271-vmmon.patch 1581 SHA256 a4e89766232d0fc0456bb026978dedca17fcc62e247c8d65ae747b537e62fd13 SHA512 10aca60b959647c058fa69f851892a0245acad971028876da8d0a0e6002d0e8f6f2677fd0d9b140ee8a1a68cf2cfa3f8937a992f8b0e7e163aa6bcc17b75c979 WHIRLPOOL 28d1a34e89c7a995dbde48d87d8942c6f58e61f4a24189a1463c148c843fdf16cea7df497993eb6fb8d8de228f07ae8a44233bb63e42b54ab1f762e7e24889ba +AUX 279-3.10-00-userns.patch 1690 SHA256 15f290e50f179ef3dcd4737632971b5f0bd3f2c252a7188dc23244d24e45c3d9 SHA512 996aa6933afe7dea1fe4eb7f152c5eb5fff7fe64d56f257593a03b7dd1b2e9a0f702e5b14b51721d938aa389590e5b777ac5abfd514f410a9568e1c34e408908 WHIRLPOOL 70c652d7e0fcf6b8317aba9cbc1248c19bc3282cbd44c3791871c1819533ad877f31e54df6b03aadbfde2d4613f31c02cdd15d2791b6a769ff39d36a59668d75 +AUX 279-3.10-01-getname.patch 729 SHA256 59864b8c33b1b21d816bb2405232d4df1dadc4e969970f704520d01309e8ea2e SHA512 67aaf42b3f7b9602ea3e84ca2f07251ef0ffc2eb2eee2919410325b9ff9ddd3629e5af2eedc91a3f6f409f17b8f69c56f06d8e24573a7e12070fb52ca96c8522 WHIRLPOOL 4348ec879efb941042f11791cc8dafa6b560cf314dd97e407d8b63833043451a7a14c5215b3178afae506566f1ab5f3e499d0ef7d9de00dc44a523e2d597c85f +AUX 279-3.10-03-deprecated.patch 3799 SHA256 ab44a1514e1e0c483094f1e4d9d57ae06b80f866260c35c75b3d292a39e333e7 SHA512 c7bd7dda3d6f1617eb2615d667b75000b5c85f6806016d5dd31f4b3508ef89e616c48aaf9785fadfdfb3e34897952d8b14db02fbdbf8e8e25754b7a3bc8b92bf WHIRLPOOL cf8116e9a99b63e099febad091bd153f7c714b718e14717a5b54cca87b34780fc6fdd44a2fa24fd6429fbcd4e34ecc51c54e72415f861fb361ceb6f1eb6a0c39 +AUX 279-3.10-04-dentry.patch 1265 SHA256 4ed8fbf240e8263ccf9ec85de3a6a42df2c174044dff8b7213b4b5e74f731e71 SHA512 7d7729667d084cb8c89eed5e085efe818e2039f3869667081a0bb0f837c96f395f3d3177b88d2cd38e382c3842f6f2e614a470778dca0f34307972d3732e1d64 WHIRLPOOL 2baf16bfa96de468f87ba430e13272b89d75f85fd3f126ed2f0a7a30da9f455db07352d38dc45db994d284d7529bdeabd3d7ec04972cfb5fc1b698306eaa12dd +AUX 279-3.10-05-inode.patch 1489 SHA256 d4db76ed1dc40386f4bb59886996e22c677629f1179a139e370cbe8b7859d1a7 SHA512 7c425186a21fd8546b3c2f51d18ff24ce999464d31e97326ddaf9ef134f1efcbc911ac538d9fa2c41b36569a5421633048bdcaf82db4d577dac28f04e1c7f413 WHIRLPOOL df57492be3c7eff7d35d026af595ade477c32c7893f73da61958579af6e97e7401d5f9bf9324ed374000f99a2999fa664be0ab7ec89f76b1378124ffe3efb672 +AUX 279-3.15-00-readlink.patch 544 SHA256 eeeefdd94c2c78adf0ae27c4f62ff612c53ef81c2b4bf1cb8b2b333f72a2de99 SHA512 2a238442f04685dc5daa2dfdcd7fbac8f46e954e90f604c681bfcae59c4a1c2b35d8311fb3560d5c8410207a691aac48da03665556429b54b493a7cda2e16a21 WHIRLPOOL d145b0a8879d365c0d861fccd0f3ec75b5db6fcd7f69dda5d9ab14285f2f65078123a6c9ade760513b5a77707f0ec8d3984e3881c4b546d0487edff353a5962e +AUX 279-3.15-01-vsock.patch 1419 SHA256 7e12baa018536c6a2b4296d0167bd9fb459fcb3950857314c9491ebf06d572b2 SHA512 34fb51223102f96b9e94d2536d1397ce2d11cc5342d80f0a8797d3309326e2f9f2b3b675bf9180bb0eb915abcabf7fdab60619f5992956c4ee7bf9804a567626 WHIRLPOOL ae3ba7caf99468182363ed9928b1b6c8cbe0d771170b0061924cc55e395e1d2a017090f3aee62fa53cc6f07a17b2446805173494b4bd3283153285f1dcdce624 +AUX 279-3.17-00-netdev.patch 721 SHA256 1da176c9a3cff1a04d0424abd7ab090696a086021e73ca143d50f69252c86b00 SHA512 3b3e79e2afe9d19315de94bd021c73a26cb7d935a1bd5f771dc0eed8100c14522d4c07a58e4b1edea42ff8522a3a2139f55de7bd048e0067fddf6e8cb1aa2262 WHIRLPOOL c3cea09406deb050a42c1ebea0ecc01d3cc98e02794ead3caf26791df67785f0ec7bda621dc51a58ec1a38a7fd472c82e96c7c51d4918c96d44ff2c7129f55c6 +AUX 279-3.18-00-version-redefined.patch 1020 SHA256 52ab071998e51e9c3a292d48b42f25442d69e5bfb442525dd28f950c914777c9 SHA512 e2edc74b7905a6409dbf9ced9e365fe16c43537f28cf5dd02adc668392659a41b005070dadee1e910106894721b2510d7c44b763c9be80dd281b0bfd024472e9 WHIRLPOOL c4e439fd98da2894489609ee0cd10162ca2d8eee7a01f9723e700dd666686f909e2a26228efa09d5b261a949d887b1b3886db0c3f121d347ed39bb3424c16d95 +AUX 279-3.19-00-compat-namei.patch 798 SHA256 510b30b679b263f2e0afa35f5d03fcfb5565ed7d3e3a48d08ceca3c497792d8e SHA512 abc9bc179fdbc1eec71ff5695e346ab06a160bdf6db5b97eb2037d5570cad8521aef33fe0ce6a4a683d7ef56274d4f31b494f017b9cdf2b2d2c98ae64cb83ee7 WHIRLPOOL 04f5ac62ac2d5e8a3394f3f2d60d170fc58ac5764582dbfee9ece7a5b4ec34cfe2f170213441b2e445cfa233de7df5c98995b6cc1d7acf5fd6d258ffb69ef82d +AUX 279-3.19-01-dentry.patch 427 SHA256 d4225cace10bb8b119c8148027ee8b944dd1da315e978b8cf988ca05def55fe9 SHA512 ba68dbdbc745700426de8b5cc3d0d8c745112932e3512e34b915360936aa8f28c17212d1e29e2af73aa40d4bee756ad2461279519b30c6e1643dd935917bd9e1 WHIRLPOOL c4f371097fcce4f35b81b5fd496f130e8966e913f92b6b9a8c23b04240dceb52bf231039606b546555061cec6c94817a42a98cc01713bc021af72996a6904bb0 +AUX 279-3.19-02-vmblock-path.patch 2943 SHA256 89467ebf6e8d938da494b32ff0bfd774d9dbc2107e5712e0d039f4c9d438fcff SHA512 356cdaba3ad69fcd3e517a3f6edc561684a8757fd8a1e5bf75ce990cdac89bef68d56adf5817cd8577875f182018f354f4aff4202684057a0ec7273137ee0ef6 WHIRLPOOL 753baa0392a7ee61614780f35df8164de5b865bfdbdf185b4c8b6e029d7c294c227ea14fc1231a4e0977638533920f58a0f50c5a3c28c987bb651802084de32b +AUX 279-3.19-03-iovec.patch 500 SHA256 1d041bad1658c6b4441de8ea496e93357e314572eb647ee903ea0ec447ad9563 SHA512 b9714b6795c08b95fe81176a7810b0c011275ba9208cee768a3c40d4a152b71a51e06e59d4d7d3a76b3c0762cdc64ae062fcaf74fa916b62a72f5aaa038202f7 WHIRLPOOL b61dae135310a8d1161540d1823d375279934e8ada36365a811ff0f147fa61609cfeed61f3972a17009c7701ca2026daf64ae13dd1b5524c8338db9037bd653b +AUX 279-3.19-04-iovec.patch 1536 SHA256 4ed2c1f0323fc47037127631495df076f6b008090451438eaaa7ff1d294f1245 SHA512 503394dca2264fc5eb34695fb493161734b9ac5d0b526cc76730720fdbd03962d3d25692da27ab799053599d8041970ba99b52190578b244a5cd0fefb02bbb47 WHIRLPOOL bf988aa0f51befba684a013c918ace53e494f5a28904d9f715188074d538a7625211f786903c2645dc07a1422182c26b936c0a821d44f871f6627472662d90d9 +AUX 279-3.19-05-vmci_qpair.patch 1061 SHA256 2804d70faabdbee64647eb53e62ad967bbbf79cd5f1734154eed5077d63fcf77 SHA512 ab3ec8b074265c51bdfbdf4324753564fedace64267040b5fdeedceeab5823a74868c6ffc06cfbf4d0e503192efda4c63d8b68e17f1abd5a4defa926728a652e WHIRLPOOL 0eb891718b3bd7534062ff0f26f68281d05681fd91d567d7deb477e925c2823c908bbf897244ca6abdfb53ddbac620c165eddb876514a1c5fb1098361133f685 +AUX 279-3.19-06-vsock.patch 602 SHA256 8ad74f7573ebdae27c446db708c7ca13f03a965e608836242d7c919f14dd1ba2 SHA512 c1684b6312b67849c0e2a2abafe9ebeaa6f46cdd8c5aeb37e1d1c3bf1db45134ab59254f36f84a8a6c366bfe6631ee7b8e75d7a0bf431c6d9570568cb61cc2ee WHIRLPOOL 4ede77589267d714e4c9eb6fc358b7856745b2d1610deca57a40a329d9ae0f1c96b728983069af556d966bfa5ae009a3cd6706ae83729fe538382ed3730926b3 +AUX 279-3.19-07-vsock.patch 571 SHA256 01964e884d427687ea27843c42d47f581503390ed71501bcca629360927d8f24 SHA512 5f1c56150192ea43480879f7b1686e065b7488b3cf70491024c78c0037e0365500d00d413a1c1aadd7f02dbc9a0f458c740aa74a814c73126d7f3c2df1140c5d WHIRLPOOL 16ebc5c2ac8da04c1cb41c74470ded344bf820c8486b06f062e77e3e707a4fa800a6127889919a979d86a656bcfbe76015f159c34d39401d970eeaba452688d2 +AUX 279-4.2-00-cookie.patch 2832 SHA256 742609c70f089bef774cb05cee3bf58a1bfc8f61d53566c1a99f8cd41a3b1cba SHA512 3143e82ac5afb3d408b9ca5e84f02083594fab1bb1e15646518b6021a902fe0767e75b464e65d47cb8eb78a43ef52ee746db16d5c2ec54948e6a190500e4e68f WHIRLPOOL 1ea67e2c19f6dca23e98241eb876e5e7aa30d409b9e73955239ee55e453f9bb16052f349a5c0e26c20c8d1871b65b713cfca10e35cf8bed66f2f205eb899f003 +AUX 279-5.10-00-userns.patch 640 SHA256 fa72410fb6d198a576a42d40993f5b186fa4203893285e9540ff4ed70240dc86 SHA512 c943d045ab704bdf9e33d4fa78e40440c1a3ee0203a522bad44d3f014405279e3e3c2fc5afb551e8a9b1b54632e4b94465d40990f306d586cb4685ebac2ea258 WHIRLPOOL cecf0f9d17fb917acfc284386ee3cbe01b03d2d5d581954a3365fe9152cb358b458b9f88ff65e53a7a660dc2cecdfc8dc292dbec7a307e1f0b5f728e650b306c +AUX 279-apic.patch 302 SHA256 60e7df881281fedcabe9ea4427b324b5e1142a1a2b6ab5236ac0843bd1051048 SHA512 003240043e5875d8c6425c146e708eb3c3d8be7fa48a2ac42b3071f00dafdbd51f7796d6f884298b135adccaf8a3eac32fd82b34a436a724da125dac5f6261d7 WHIRLPOOL 4707d0ddd532d5ec27ee2ba3d0fb25c1972bbc9f958b4b89f2f5cceffdf955ba88cd1be0cde046aa5fa688d52faeab5ccf3f03bbccb3e9b088abc37ad579e8e0 +AUX 279-filldir.patch 2485 SHA256 539e8940b47cb7a5f39ab2ba6f18ceb290a2627c81bd6daead6e5850aec02a63 SHA512 e5f85031f459a79a0f64b15224ae8c1ef23892ef159a37955b9c2a2b13ab6e892325a5aeedd4fd2969da3b187cedcaea8fc41540638d02cf56dce2d3e9194937 WHIRLPOOL a455300e72624e4f9c8d3dc79fa5c3ab1b288e79a04483503006a61d44bc83bf14faf0bfa753f82a70dbd23f870b2f6bfe1b06d23792eb1522a7265799ce03eb +AUX 279-hardened.patch 3334 SHA256 198c182b626aeeb0c6e6558e6982b6d9cd2f11bf03515f72972842f5c773e52c SHA512 eb6829742c44677c6d475894a2a996a87feb1c2ab9afda6a045333fc5befb1c2551ea17ec33e665542d322fb43195b6cfcd576665a73cfc82d66a98579521cf3 WHIRLPOOL d8fde574d68978a4850f06469e5a6dfe21acd0a68b744f3f37ffeb98d5f8786eedeb9fb435e1b141044a23fb142ae44879ee09a45229f2be1c84ef744c15cb7a +AUX 279-makefile-include.patch 2501 SHA256 208121855fe18ecb279ff40f2833463559363461c2170d32c17040211a01f169 SHA512 c498c025c7eb025f6554cee683242dd73e4a284e4b28c95b75339f4f4a912a156acc1845881fbd78bf399c2092af7413f5d6c4782cd066527ea275518b411c1d WHIRLPOOL e03a6d7139ab7b309e0ca1527cb8b52a8f84f5f5d997a510305d2a6ccdd39f33b18c7276df8ac78d92d2a17a66236f582baaa5e374069d3912090544908a0338 +AUX 279-makefile-kernel-dir.patch 2153 SHA256 d76b1028d21b804836e36478d243cd7914435a34f3fe014058e0a9cc7a020653 SHA512 f18339dc8ac4c864b0c2fb234ad2db8f4638a5cd28e8fd11b5593c82107925b41b42e0d0acac52232a373780d79a3e397f70886534cdf889055e86cfda718f62 WHIRLPOOL 70c869bf4efab6843856addd0c5f5a295ed2fe38f9fc2a8ab2ca55523cd39cb92018d6bd0dac75658fa0f5260962c98f0bbd001593f3f11c2d204c693061c5b6 +AUX 279-netdevice.patch 833 SHA256 8f17ce379abda45a8f94e1dcd6e43367273f97f76edd41f9941beb3b1730a751 SHA512 b4ec7c1694968a1843f10e8bfe0dbfdc99bd3b5fc1391456d91a3648b848b82df681a0748d967afa19e728c4d19b79b6a3cb9fd3e15a52a5cab048a6ac9b06a9 WHIRLPOOL b0cabe2ec1b8ca52d427c02593d6057c98d4ed00c578d006de65460138c37a5be76a7938d85f5a35eb6f49ee5e34065ce62b60a51b0ccf021639a59b27aeac8a +AUX 279-putname.patch 394 SHA256 b8103d3c72c24696e974e49dcdcdf2d5a2b2c2fdd5f6ca050842b840e906ba77 SHA512 86a0a0ec3ff225940190056e85d498fd7eb260bcc52882fea8921398f572bc46f56c3f2941d3f3d1587a07bc72c8885cbddacf632d2b5fed7d8c9d284399d6d8 WHIRLPOOL e1e8afcafe00131fd6d90b61e5d911da69d7c26b7fd19be085eb5cfd23c2ab19784ae5ddf18928f9cc4a178d87c6d51e8de27dfab8507e2d57fc18868fde9f45 +AUX 279-vfsfollowlink.patch 1219 SHA256 b195f6492a172f682d55fb506ba02c473fd924bb47dc0d1359dd5de163b4da22 SHA512 b675f68175be0b7003d2f80c54dce05a064f8d5bd8744d40571d3d1e0153c01f909e37e0403e53f23a6d61383a9b054c40a2a9ffa95dd765eeffb0c7e739ff1d WHIRLPOOL 3e108ee29c2050029c6079f652e2670529a9f6b220524db214c7dadba3dcaef8fa1ab261f0e10ffa7506456d9f3cccc954bf6a82960e78ebd120c1eb2aac68e8 +AUX 279-vmblock.patch 1041 SHA256 217d27619ac782711686cffee44fbc4bbb40eb0657f335357ad1b0d064f30a35 SHA512 e8e565b677110090cb5bdb7c18d3e97c31049d846b82ee0406aa27dbfa9af8afc39512f1314d49edd6108ec576f3cbc565921de8dfdaaefe2822029ef98c303c WHIRLPOOL 769d0cffcb186d6110de049db963e20e049ef11d92b872c1a6ecfe262acad6c17f456376d219ce01e22839ddcb6a21a2d3e995d797f4c962a0838318dc6f56f9 +AUX 304-3.10-00-dentry.patch 1500 SHA256 efdd1ced43e6530c27fc8f60cdfab8ee9221be304f2872c7d76336d4b2609816 SHA512 a4f10f9c6aae9fb6ec6a89d817d75dfca9d737d8aaf3485529ed94f195463571a49baac851f73eb21d631787cd6c357094eed8cd7e34fe697e8c6586e00d031e WHIRLPOOL e858360a691a96bd6e5c9f1a582531f31d958f8e938717606b5635b0f2e2c3cbfc4fd219399160a6b2b45a27018974f1485a0f69765cb47054b4af3d261a2d33 +AUX 304-3.10-01-inode.patch 2885 SHA256 ae6d7f1ad52583378e71a70105c929108a58434f57005fc3d392a02fa6d1c3ff SHA512 c5c5cb94b1a2d7db41de93ed8bb81ff75e3853f9054cfa431d59ac2547f4df05e941bb7678c3f2378ded8eb746e45cb27c7faab22851ad8183d5067a1176af37 WHIRLPOOL 239c5e1ba57cddb394a1a16f5a8fe01f1fa5251eea882c94b64c6a8b8b4ab290d15c091ea3ff89d629f9535190d590397a06d9138408871a4917ea8882d53555 +AUX 304-3.10-02-control.patch 1679 SHA256 1929822dfcee818bf94056995fafbb1e8bb67254b6421dbfb03ff53ef7a22b4c SHA512 8e53dd4d6dc9b78e43396973ee42235ff24488c115d6f958e8090fa5dda0b738ae24b9b9bd56b13ad6c65ce69e2f2099fe929982b8b2894cf296b5b17cd71ab4 WHIRLPOOL fb708d317b3d2b938af9571f7d95c89ddfa08cf5847439be053417612e8b74a5e69211eba33bb3979144d8b199c0ee9cf24a725f89b385ba8a1c72d4c0de8100 +AUX 304-3.10-03-inline.patch 463 SHA256 812963c925af015668180d4bf484fe39d6cf19cd5d3139ea71d895d244fa03cf SHA512 951e9f40a29404b985bcecb659f82bcc20fcdef02aadec76fef7ca5e459309244316799031ac78cabbc29747ee17b754d8aa476ce07f4dc6ed543064e4f79382 WHIRLPOOL 75b7ee8d5ff8f5a122775206e33bb9fa2dde296e663be755dff55d82e083a92d34325627eedaab2901d809a921198f7335c039fdaf29e5b0c2bcabdf24934a31 +AUX 304-3.11-00-readdir.patch 1063 SHA256 60a33321ef47dc99713677f639c49f46ff7a7e34aeb226eb8d234a4d2ab19ab2 SHA512 ab63a21bf40f5ac02dfafdf353e7b5a139e3e0f4e935b45562526479bf196547da10e2608a368f1cb62a743f969b38f5223679f967b23e13a555f8f38ec7842c WHIRLPOOL 3c9b75aa95656e550620a15cd760cb4b23b22d1c6b93e1b0be2d077d40bc506134fd53d4b5a6ce48ad2723339a97054b1b0d958d38662180ffa2c262f15e648b +AUX 304-3.11-01-filldir.patch 1619 SHA256 5de58aa1dcd7b9566e32fd8eedac9bec3135a8da20e8bcc6fd3887bba92c4e5c SHA512 779d22bd1184507ec2a06466524b62c33e3bfea7c1c1a41a9a2c96797a6518f3a0159915ff75e9b18f8323e1007a09fc13f83da3ab9ee4b621544643028d0c49 WHIRLPOOL 3c72b7695cf593d757bb6a01ec94e66268aeb1dd8b52d7bb0fcbe7c537707240ac31a1095341887cbf344d77a150edba33cef946baca9b84999c63e6dc708ec6 +AUX 304-3.15-00-vsock.patch 1419 SHA256 7e12baa018536c6a2b4296d0167bd9fb459fcb3950857314c9491ebf06d572b2 SHA512 34fb51223102f96b9e94d2536d1397ce2d11cc5342d80f0a8797d3309326e2f9f2b3b675bf9180bb0eb915abcabf7fdab60619f5992956c4ee7bf9804a567626 WHIRLPOOL ae3ba7caf99468182363ed9928b1b6c8cbe0d771170b0061924cc55e395e1d2a017090f3aee62fa53cc6f07a17b2446805173494b4bd3283153285f1dcdce624 +AUX 304-3.18-00-version-redefined.patch 1096 SHA256 0a15dcc65fcd8b8e99866d1f4c7fdc2ab1d4d49982108b5838188bb8a44e8514 SHA512 1a63aca35e50feeb9950ca1867e6961eda62adb1e1d61a3c4ab9b86b6d07b0897caf89e1702ab49384e03aaa68368a9d84eb6aecd1516a81aa0ffa7741304d9b WHIRLPOOL d2ef4bd78a91c5093f57be487fa80fd22aee5f8d158e7227cb4fdb03fb549ba1d834a5683caf0131c11f76dd170531559a52f4a3f867370d69c9feeb17c885a3 +AUX 304-3.19-00-compat-namei.patch 866 SHA256 7c95f4993e086ede3d2cd47014475c78097476c8dc0b9366074ed3dcb82e3fd0 SHA512 592015525aad3c6cd5eb7b46d59a25b9cfd1fdc3782a4e4cdd555a3b2fbd2e7734d8168e04425418c8bd7075c33e20cfa1e36457450bea6ec8a819b511212d5a WHIRLPOOL b02e137b19f70d03c46607e8ffe45f22691e9b6d8391ca41478ff1b8a65dd7a0bd44b4b74cf4fae3876d8d27a274a875487b8db3cb809dd7522e0d417e1a02d2 +AUX 304-3.19-01-dentry.patch 492 SHA256 ff66564d79bffdf3f79c0bb1c383778340382ea16f2d7763e80288f074b7f162 SHA512 8366248eb4f48a71475cb8f7e8cc45905b80df1626a3527abe6df926ee5e3e65f8dc26a44b2c927406c57a25b85764896128b6b20134bf4abecdaf8b39ef2ce2 WHIRLPOOL d8ab2f6a2b99dabae4215bbd2f7df842b0bb88a658496f23de20422df923f28b3bf3716aa5e9c495826135d27583219a5ba4fe14c38abcdb4e2e17178c6adab0 +AUX 304-3.19-02-vmblock-path.patch 2943 SHA256 89467ebf6e8d938da494b32ff0bfd774d9dbc2107e5712e0d039f4c9d438fcff SHA512 356cdaba3ad69fcd3e517a3f6edc561684a8757fd8a1e5bf75ce990cdac89bef68d56adf5817cd8577875f182018f354f4aff4202684057a0ec7273137ee0ef6 WHIRLPOOL 753baa0392a7ee61614780f35df8164de5b865bfdbdf185b4c8b6e029d7c294c227ea14fc1231a4e0977638533920f58a0f50c5a3c28c987bb651802084de32b +AUX 304-3.19-03-iovec.patch 604 SHA256 169d892f6d2fcd6300412e2cf2871205342ca454ca7c4feb313ae6e1a714f41b SHA512 be86fa1b4c05cb7f1df2b0ee0765592e5c492a17caaad82ac0b251589025e9b2a689e4e2b3713a3ebfaf557de8f5176749657499c67456f96aa9be476149117b WHIRLPOOL 9c676a2de939d89cd5776b8cfcbe8498a307c69a6b21916a8a7356a74610bb272cbb72221cb87d2f2d18f5dbcd7f652d5a13f83fe6ac321f825d62a9992f1ec7 +AUX 304-3.19-04-iovec.patch 2169 SHA256 335056000885960c24ef19216ff0d9a44994cd519b5d0d2fdb4c3ec973d609f8 SHA512 2768b54c1bdd5781b76b866a5055662b76d6d2e99ccbcc5fedcc2244ec369fb7f7ba502ea8554762eff6641ef6fdbeb53f95684a45485a9ccd32892e0a32722d WHIRLPOOL ff9a1e7d57a0e1422c8199a28269ac18cdc546ff901ddcea4e2f485044b066000dd76471d512ecc63b182d8aaebc74dfc9fdd016d4c0a7ed4cea7a60a2e15b63 +AUX 304-3.19-05-vmci_qpair.patch 1165 SHA256 6311745690e2c0a2d6c064dced0ee8518d95c4ade1aa76ff5300ccd6e653aaf9 SHA512 d8a719e314dbd20c26f448031e1bfc536dcaa1d707c05efe90af3ce0e2c6742e65ff83d1196ec5f33a8fed61a7de9f5c9948e2813cba80c074eaa0f1df5d7b30 WHIRLPOOL d410b9c186a82b6583fcedc3caf00163e1804202e5a2203d4eb56238bc134850d19bad1263165750b3c5ef101cb190cb6b4d7c42e81f50cc28136502e8170963 +AUX 304-3.19-06-vsock.patch 706 SHA256 d2c7abdc2b695f091ed17ffc89b4cad44e635b81dc4f70cd06b2693bf29ae2c3 SHA512 50f32d161f2a08b9ae894d2386bad7e0e9da19db552a8367cf5191465c94bf664e90d5c73dd1e69b30b6fc6f98ffed0df404723e3548a648525ded80bea15464 WHIRLPOOL 50689f8709f33e9c950bbe11c2b499abb4ec6d3025ad3bdad98c9ab383562206e23dde350a9b345c4cff97381dcc88ffdbb9df4ba4af8d28ac921ec93927ab74 +AUX 304-3.19-07-vsock.patch 675 SHA256 35ae4e7c2837549ea0a7c05ddeb06267e94e1828176a535e6d97d7b25c1261fa SHA512 552f8564820941d347d1cb8cc3203642e6d8eef40cd1855de3c771be481426df923d1d17be4506836a37bad8f728c617d9c194c6e832f4e6db7cc39eaa1153dc WHIRLPOOL 10732f5c4c2d62ebbdcd338d5959dab081c03fc232dc678a9e210693cd5a5994f07ae7b30d50b2bddadac175afd2e9fef3e61958a5bd9b9e7ef419ccfb3a6681 +AUX 304-4.2-00-inode_op.patch 1614 SHA256 a0f5f7b772973df8179137a9fdadcd459a9403365434162ff0f2e6e920ce37c6 SHA512 ef2deeeed2683e81339d032e7bf363360fbc9335a5ec0b3a2b2e4221e961762d1e42b81507767256724e5d105087ffcd8b3faccaabc3acaed9320366058a24f5 WHIRLPOOL 26713d6cc19330f61262da8986c6b3bf869a6ec53fe9261bca8f165a381eabf0f1a7e66cf71b40fae19b7c66e1561e24fe89ac097f7b2c6581e92e0408e7771e +AUX 304-4.2-01-inode.patch 1678 SHA256 9cdf18611fb68e852125842222afa2db440938102199c8f63c8388d525694072 SHA512 b26c57bea28c4841111e2dad2a20e19ede9de8a3e099dce1547c1604996f8f213df840bcd46509887c187722d879389b28fa46f4507d8a550d22aa2ad575c78e WHIRLPOOL d63f4417529b383dd872398486110dfe2f95408b7176b24db90c075c9f79b97bdec99a3c37c265a2d226c2c27be85a269474cc098994bcd33a06f2d1c2068647 +AUX 304-4.2-01-vmci_vmalloc.patch 484 SHA256 31ceef7cb3fc9b9273a64b1eb843481f04c5488a1edd40a0e8e698e3f6eac391 SHA512 a0589ec7f163533ce35aac9b23ab8c1ad2bf6c465f1e22c542ecc655ffbe5089ac47b70823810cfd69acd4af962532111daa6ff0fbcf7a2e29efda83270255f2 WHIRLPOOL 327557011366d5d2f701841edf432c17f931f4cdbc51208f0a23e4d03ef4e5110b8151de4512b7a390ab9966a172c5520b7ec8b2ead22e939f7eb958432a0152 +AUX 304-4.2-02-vmnetInt.patch 915 SHA256 8658f039782e74780b40bacb2a0eb62922117ba3a0b0a7768f9efd9bf200cca0 SHA512 caf1296a46f34404a917b3910319dd2b1cd50b6b1255c9836ae379c74270ad0630ec2c62493f3b2c90a0eb0f356f0040259d93cfb788ee057fc997c8c4a56171 WHIRLPOOL 33dd6bc1d263c291943f54355d82ca8b36b1f0451c92844e048ee9ff9c87e237e08985bcf0edac262c29f627b044280a99d5dc1a3b5f48c79d9fa72957ba357c +AUX 304-4.2-02-vsock.patch 3482 SHA256 e813bac14c61129811ab3abdb2733d6c7f5d2ef8a2ad808f32888a03eddfc8f9 SHA512 d09572f71bea90117bfc6c1783f2f55aa1a87394c6ea52d7a50849713b2f5c8c00ae632246d9496d75a99beacd4121582e118f4f5d0b97f976882233a5b647b1 WHIRLPOOL 3dd275814cc0ef489ccaad425c539ef1c7308201ee6c0fd6128bfe9fe39976b8fc66ecf973a510b04da0321ac2a93e52fa08d12888d1bd44b9219525bfc57858 +AUX 304-4.2-03-af_vsock.patch 665 SHA256 e35240d40292fd75098941f25881ffe7b6a34f6b9b5e5cb8ffba36ecb6246875 SHA512 90606f5a509712d3cb756885c7f00ea0f4a12a3fb028c402011c82fa4e8b6f8bba1aeb4c45381fefe84d4775db997ffe1e413d52efb2814270a2b266dd50ded8 WHIRLPOOL b79dc9dc497ed6330b3825f157e3e22833a5b0231a9ab9bd49c5793191916c43fb33a79176645aebce0172fea3269cdbcb88142e705b08270b4d704e19ca91e7 +AUX 304-4.2-03-vsock.patch 768 SHA256 f58ad63514d4841cc4c8e866a2f083b20cc43ad1fef39778885ad194c2686061 SHA512 dbe42f664ee0e7d1935afc5b29e33fc6a87c8cb36d79a08c0808dec490dfe76334a6c8c951f1cb517df1bec7cbdc7d864f3d4edda1d2fc8e4eb73984e041424d WHIRLPOOL 3960e24bc6e20748c31fff7de2b840d1ab874e595dfa0e948bec79cc3fda80991239c4485ee509018fce83425be68f65fe9a5384bcc42465e4626c08a9f8d4a4 +AUX 304-4.2-04-driver.patch 1495 SHA256 6782262a23876a4062d1b58fbe1501e692a34689c3930e5bd3b44c1de01bc19b SHA512 1b2b4689d62ea6a39acce9e1832f37c6a395a00cd9dc38a67ba0b7c54e4d51457abed828c2283c00b54017a340c2ec5bf4f611be65a6cc60885f7e01b2e91c31 WHIRLPOOL 53a50e2424e23ff3246c98c8bf33f3f97205a2aa01ec2a591964ac98f4e7f404dc2df13cf8b347a3a9bafb18e81aa4e568a0746e22c0d3f8ee84b0a255698c91 +AUX 304-4.3-00-misc_deregister.patch 1081 SHA256 9fded0ffbf9268c4f3806d50c30af7306974d64d3777f5469cff18fe13a0bc80 SHA512 22e7a2a53e72fe262af3b085aaf869b381b630ed07103a1cf755f6cd1365954cc36f8c6228d9cc81a065a55c2465685e3dbe396ec56d1b6ddb9e24b2b58c9cdd WHIRLPOOL a66a146a25662ec23d8ca1a05e4a85a1c8908275710ce828c5184f4055274dac44a7c4845ae9127b613fb91619838039903dccea18f4757a17114d5d254e72aa +AUX 304-4.5-00-get_link.patch 2435 SHA256 97f8581e2b66aca41fe14367da7b400a6241d73f0a961fbad0c72a6f5ad3b368 SHA512 026117f283c569321851bbb7e24bf606dbf3fbe3291b898ee279620465c34975766ff136d24d013bf9624323f9e04047fd373db9c488ffb44ed9d22645d33523 WHIRLPOOL f7f99f880ac8f154398dc73ca62b931c7b26477903cd3918f6bcf74436ba1f5d1f6c1ca0979ee3910a8e46a74f6369cada0c7147fe84362fa5acb796f483f220 +AUX 304-apic.patch 302 SHA256 60e7df881281fedcabe9ea4427b324b5e1142a1a2b6ab5236ac0843bd1051048 SHA512 003240043e5875d8c6425c146e708eb3c3d8be7fa48a2ac42b3071f00dafdbd51f7796d6f884298b135adccaf8a3eac32fd82b34a436a724da125dac5f6261d7 WHIRLPOOL 4707d0ddd532d5ec27ee2ba3d0fb25c1972bbc9f958b4b89f2f5cceffdf955ba88cd1be0cde046aa5fa688d52faeab5ccf3f03bbccb3e9b088abc37ad579e8e0 +AUX 304-hardened.patch 3334 SHA256 198c182b626aeeb0c6e6558e6982b6d9cd2f11bf03515f72972842f5c773e52c SHA512 eb6829742c44677c6d475894a2a996a87feb1c2ab9afda6a045333fc5befb1c2551ea17ec33e665542d322fb43195b6cfcd576665a73cfc82d66a98579521cf3 WHIRLPOOL d8fde574d68978a4850f06469e5a6dfe21acd0a68b744f3f37ffeb98d5f8786eedeb9fb435e1b141044a23fb142ae44879ee09a45229f2be1c84ef744c15cb7a +AUX 304-makefile-include.patch 2501 SHA256 208121855fe18ecb279ff40f2833463559363461c2170d32c17040211a01f169 SHA512 c498c025c7eb025f6554cee683242dd73e4a284e4b28c95b75339f4f4a912a156acc1845881fbd78bf399c2092af7413f5d6c4782cd066527ea275518b411c1d WHIRLPOOL e03a6d7139ab7b309e0ca1527cb8b52a8f84f5f5d997a510305d2a6ccdd39f33b18c7276df8ac78d92d2a17a66236f582baaa5e374069d3912090544908a0338 +AUX 304-makefile-kernel-dir.patch 2153 SHA256 d76b1028d21b804836e36478d243cd7914435a34f3fe014058e0a9cc7a020653 SHA512 f18339dc8ac4c864b0c2fb234ad2db8f4638a5cd28e8fd11b5593c82107925b41b42e0d0acac52232a373780d79a3e397f70886534cdf889055e86cfda718f62 WHIRLPOOL 70c869bf4efab6843856addd0c5f5a295ed2fe38f9fc2a8ab2ca55523cd39cb92018d6bd0dac75658fa0f5260962c98f0bbd001593f3f11c2d204c693061c5b6 +AUX 304-netdevice.patch 833 SHA256 8f17ce379abda45a8f94e1dcd6e43367273f97f76edd41f9941beb3b1730a751 SHA512 b4ec7c1694968a1843f10e8bfe0dbfdc99bd3b5fc1391456d91a3648b848b82df681a0748d967afa19e728c4d19b79b6a3cb9fd3e15a52a5cab048a6ac9b06a9 WHIRLPOOL b0cabe2ec1b8ca52d427c02593d6057c98d4ed00c578d006de65460138c37a5be76a7938d85f5a35eb6f49ee5e34065ce62b60a51b0ccf021639a59b27aeac8a +AUX 308-3.10-00-dentry.patch 1500 SHA256 efdd1ced43e6530c27fc8f60cdfab8ee9221be304f2872c7d76336d4b2609816 SHA512 a4f10f9c6aae9fb6ec6a89d817d75dfca9d737d8aaf3485529ed94f195463571a49baac851f73eb21d631787cd6c357094eed8cd7e34fe697e8c6586e00d031e WHIRLPOOL e858360a691a96bd6e5c9f1a582531f31d958f8e938717606b5635b0f2e2c3cbfc4fd219399160a6b2b45a27018974f1485a0f69765cb47054b4af3d261a2d33 +AUX 308-3.10-01-inode.patch 2885 SHA256 ae6d7f1ad52583378e71a70105c929108a58434f57005fc3d392a02fa6d1c3ff SHA512 c5c5cb94b1a2d7db41de93ed8bb81ff75e3853f9054cfa431d59ac2547f4df05e941bb7678c3f2378ded8eb746e45cb27c7faab22851ad8183d5067a1176af37 WHIRLPOOL 239c5e1ba57cddb394a1a16f5a8fe01f1fa5251eea882c94b64c6a8b8b4ab290d15c091ea3ff89d629f9535190d590397a06d9138408871a4917ea8882d53555 +AUX 308-3.10-02-control.patch 1679 SHA256 1929822dfcee818bf94056995fafbb1e8bb67254b6421dbfb03ff53ef7a22b4c SHA512 8e53dd4d6dc9b78e43396973ee42235ff24488c115d6f958e8090fa5dda0b738ae24b9b9bd56b13ad6c65ce69e2f2099fe929982b8b2894cf296b5b17cd71ab4 WHIRLPOOL fb708d317b3d2b938af9571f7d95c89ddfa08cf5847439be053417612e8b74a5e69211eba33bb3979144d8b199c0ee9cf24a725f89b385ba8a1c72d4c0de8100 +AUX 308-3.10-03-inline.patch 463 SHA256 812963c925af015668180d4bf484fe39d6cf19cd5d3139ea71d895d244fa03cf SHA512 951e9f40a29404b985bcecb659f82bcc20fcdef02aadec76fef7ca5e459309244316799031ac78cabbc29747ee17b754d8aa476ce07f4dc6ed543064e4f79382 WHIRLPOOL 75b7ee8d5ff8f5a122775206e33bb9fa2dde296e663be755dff55d82e083a92d34325627eedaab2901d809a921198f7335c039fdaf29e5b0c2bcabdf24934a31 +AUX 308-3.11-00-readdir.patch 1063 SHA256 60a33321ef47dc99713677f639c49f46ff7a7e34aeb226eb8d234a4d2ab19ab2 SHA512 ab63a21bf40f5ac02dfafdf353e7b5a139e3e0f4e935b45562526479bf196547da10e2608a368f1cb62a743f969b38f5223679f967b23e13a555f8f38ec7842c WHIRLPOOL 3c9b75aa95656e550620a15cd760cb4b23b22d1c6b93e1b0be2d077d40bc506134fd53d4b5a6ce48ad2723339a97054b1b0d958d38662180ffa2c262f15e648b +AUX 308-3.11-01-filldir.patch 1619 SHA256 5de58aa1dcd7b9566e32fd8eedac9bec3135a8da20e8bcc6fd3887bba92c4e5c SHA512 779d22bd1184507ec2a06466524b62c33e3bfea7c1c1a41a9a2c96797a6518f3a0159915ff75e9b18f8323e1007a09fc13f83da3ab9ee4b621544643028d0c49 WHIRLPOOL 3c72b7695cf593d757bb6a01ec94e66268aeb1dd8b52d7bb0fcbe7c537707240ac31a1095341887cbf344d77a150edba33cef946baca9b84999c63e6dc708ec6 +AUX 308-3.15-00-vsock.patch 1419 SHA256 7e12baa018536c6a2b4296d0167bd9fb459fcb3950857314c9491ebf06d572b2 SHA512 34fb51223102f96b9e94d2536d1397ce2d11cc5342d80f0a8797d3309326e2f9f2b3b675bf9180bb0eb915abcabf7fdab60619f5992956c4ee7bf9804a567626 WHIRLPOOL ae3ba7caf99468182363ed9928b1b6c8cbe0d771170b0061924cc55e395e1d2a017090f3aee62fa53cc6f07a17b2446805173494b4bd3283153285f1dcdce624 +AUX 308-3.18-00-version-redefined.patch 1096 SHA256 0a15dcc65fcd8b8e99866d1f4c7fdc2ab1d4d49982108b5838188bb8a44e8514 SHA512 1a63aca35e50feeb9950ca1867e6961eda62adb1e1d61a3c4ab9b86b6d07b0897caf89e1702ab49384e03aaa68368a9d84eb6aecd1516a81aa0ffa7741304d9b WHIRLPOOL d2ef4bd78a91c5093f57be487fa80fd22aee5f8d158e7227cb4fdb03fb549ba1d834a5683caf0131c11f76dd170531559a52f4a3f867370d69c9feeb17c885a3 +AUX 308-3.19-00-compat-namei.patch 866 SHA256 7c95f4993e086ede3d2cd47014475c78097476c8dc0b9366074ed3dcb82e3fd0 SHA512 592015525aad3c6cd5eb7b46d59a25b9cfd1fdc3782a4e4cdd555a3b2fbd2e7734d8168e04425418c8bd7075c33e20cfa1e36457450bea6ec8a819b511212d5a WHIRLPOOL b02e137b19f70d03c46607e8ffe45f22691e9b6d8391ca41478ff1b8a65dd7a0bd44b4b74cf4fae3876d8d27a274a875487b8db3cb809dd7522e0d417e1a02d2 +AUX 308-3.19-02-vmblock-path.patch 2943 SHA256 89467ebf6e8d938da494b32ff0bfd774d9dbc2107e5712e0d039f4c9d438fcff SHA512 356cdaba3ad69fcd3e517a3f6edc561684a8757fd8a1e5bf75ce990cdac89bef68d56adf5817cd8577875f182018f354f4aff4202684057a0ec7273137ee0ef6 WHIRLPOOL 753baa0392a7ee61614780f35df8164de5b865bfdbdf185b4c8b6e029d7c294c227ea14fc1231a4e0977638533920f58a0f50c5a3c28c987bb651802084de32b +AUX 308-3.19-04-iovec.patch 2169 SHA256 335056000885960c24ef19216ff0d9a44994cd519b5d0d2fdb4c3ec973d609f8 SHA512 2768b54c1bdd5781b76b866a5055662b76d6d2e99ccbcc5fedcc2244ec369fb7f7ba502ea8554762eff6641ef6fdbeb53f95684a45485a9ccd32892e0a32722d WHIRLPOOL ff9a1e7d57a0e1422c8199a28269ac18cdc546ff901ddcea4e2f485044b066000dd76471d512ecc63b182d8aaebc74dfc9fdd016d4c0a7ed4cea7a60a2e15b63 +AUX 308-3.19-05-vmci_qpair.patch 1165 SHA256 6311745690e2c0a2d6c064dced0ee8518d95c4ade1aa76ff5300ccd6e653aaf9 SHA512 d8a719e314dbd20c26f448031e1bfc536dcaa1d707c05efe90af3ce0e2c6742e65ff83d1196ec5f33a8fed61a7de9f5c9948e2813cba80c074eaa0f1df5d7b30 WHIRLPOOL d410b9c186a82b6583fcedc3caf00163e1804202e5a2203d4eb56238bc134850d19bad1263165750b3c5ef101cb190cb6b4d7c42e81f50cc28136502e8170963 +AUX 308-3.19-06-vsock.patch 706 SHA256 d2c7abdc2b695f091ed17ffc89b4cad44e635b81dc4f70cd06b2693bf29ae2c3 SHA512 50f32d161f2a08b9ae894d2386bad7e0e9da19db552a8367cf5191465c94bf664e90d5c73dd1e69b30b6fc6f98ffed0df404723e3548a648525ded80bea15464 WHIRLPOOL 50689f8709f33e9c950bbe11c2b499abb4ec6d3025ad3bdad98c9ab383562206e23dde350a9b345c4cff97381dcc88ffdbb9df4ba4af8d28ac921ec93927ab74 +AUX 308-3.19-07-vsock.patch 675 SHA256 35ae4e7c2837549ea0a7c05ddeb06267e94e1828176a535e6d97d7b25c1261fa SHA512 552f8564820941d347d1cb8cc3203642e6d8eef40cd1855de3c771be481426df923d1d17be4506836a37bad8f728c617d9c194c6e832f4e6db7cc39eaa1153dc WHIRLPOOL 10732f5c4c2d62ebbdcd338d5959dab081c03fc232dc678a9e210693cd5a5994f07ae7b30d50b2bddadac175afd2e9fef3e61958a5bd9b9e7ef419ccfb3a6681 +AUX 308-4.01-00-vsock.patch 3262 SHA256 72fa0dde43386260208797bac7735bc87faf9010136e66d772b1c58e58b96340 SHA512 9702ea2db83bb5412617fc00b2113a0c7188785db040de6a5eeb60a015f9a1156838767ac70f1ef9b394b808dd267543fd05af34ab428ccab35b0c6bcfc49f62 WHIRLPOOL 161910c8d19c632b163be0e7e16020e971beb6597e100edf4e4f1ee1f3847799b17cb480ed99247f57e9927472e24e6b4557530564a9645f297124fb801901a4 +AUX 308-4.02-00-nd_set_link.patch 1841 SHA256 61c35e4a5477b29b5fc65f04fca4a60ef45299e3a5153084742a5e3b74804717 SHA512 720b19747edef22bfb48d94d11f1bd0c67c8f18e08e4ff284b5d9b13c310e4b1aaa7acbdba55bdc3386e625562ba91253e9f92006f5e6ef5231f84b91e47ad60 WHIRLPOOL ff7cbbc7de21c1e35c783c79115da3d400120756abb4cb5b7d978714fd27bf094899650250167472357bfccc369cc5c617addbb3bec6eafd8066c77fffa17078 +AUX 308-4.02-01-sk_alloc.patch 1033 SHA256 426c8087f648518b9e07d4a6cb94c71cc4bb4d7169ffc44f208145ff29900488 SHA512 e2e2523a78cefb648cbfe99302043e57e7ccd9b2bcac45f2feb039278ddf30aec1ad3c9c9ff5f0cbed993c3b1c557bf6f1116619b00438a9ca2c04d7db8432e5 WHIRLPOOL 9113899ade845cd475c13b47574f17fa07cdc698737492d3138bcb96bc5ee4e437fe0f1eb1f367689b0c49efefddbe71b902a056e20175f24a7cd78f134c7e09 +AUX 308-4.03-00-vmci-misc_deregister.patch 829 SHA256 2b5def2395c7120e0c626a082b6a99381c88e4518c871ff7e6cf2950e4d5b206 SHA512 ad9eed0b7c76fc210af72a438c4f6f882c1e3039151bf9d166a6f62ac64045b7f0cea7281c02fb1b456233bba9bcccd64587974108d0a9a793ba18ec92e1bf54 WHIRLPOOL c25648d92b0285ea395a6e3a0f365199561004ffc610f4462c62280d5befd9e93eb723658bd7fe4e8a505fb0b019e170472631ff6aee8c473aeda9446a7f1f8e +AUX 308-4.03-00-vmmon-misc_deregister.patch 564 SHA256 68c6ebe4e41866b9d83163fbf1b2f370411438fcb26d74585b58e8799b312092 SHA512 566b90d05185371c07574df8a84633047ed559e2677d7689dab64b14cde417e872a4c32e8ca2c6434d66cf25fac5c6e51a7e735acc3b51c15201f07bf118ed9a WHIRLPOOL a7da87d06d9077cc73b43fe44a3123113b9286a4144e014a473b0921c00e7062c10c633cd6a6976ac3fedf5cfd85e777f2018a1378a0f54bef1354cc6b19052c +AUX 308-4.05-00-vmblock-follow_link.patch 1764 SHA256 0ae11afc27a80a7ca5be2eca38e4f1c146c6237dfa7df405a35a3acce9b871c9 SHA512 9957ec445ce4691a772f2a7cf1f2eb7ff3b4b215fb47b93e1eef3ba222e4137e65f968335a46ce2a429698b7c10bece7455330beb895455a9e6a3efbf63c27f9 WHIRLPOOL 900f6b5488bb2875c9b1bb85d4013ec1b70cfc189c7c5ce76a0eff82c7ef2dfb2c56a333552fccbcfa84f575b2d3f99c1ce0c295ab940575eb10116a6951e0b7 +AUX 308-apic.patch 302 SHA256 60e7df881281fedcabe9ea4427b324b5e1142a1a2b6ab5236ac0843bd1051048 SHA512 003240043e5875d8c6425c146e708eb3c3d8be7fa48a2ac42b3071f00dafdbd51f7796d6f884298b135adccaf8a3eac32fd82b34a436a724da125dac5f6261d7 WHIRLPOOL 4707d0ddd532d5ec27ee2ba3d0fb25c1972bbc9f958b4b89f2f5cceffdf955ba88cd1be0cde046aa5fa688d52faeab5ccf3f03bbccb3e9b088abc37ad579e8e0 +AUX 308-hardened.patch 2946 SHA256 c13903aa4167bb0c97642787dec5ad4ca69a2ab4b3f26c050562531d71016c1c SHA512 baacfbae28ea36f475c0e8b6c373d4dda8fdc1ef0a97a3cfe8b31204a7deb613086338cddc942d1b92e5775668d28366392033c41cdd79a96a54ce7ca284bae3 WHIRLPOOL 4926de36d53646f36731cbde677f2fdb0f25fb6705be89b7530bad37f3b61815ff1a1b25972de41eeeae671afa36e05df5115be6661efc8cc1c58a36a7648b77 +AUX 308-makefile-include.patch 2501 SHA256 208121855fe18ecb279ff40f2833463559363461c2170d32c17040211a01f169 SHA512 c498c025c7eb025f6554cee683242dd73e4a284e4b28c95b75339f4f4a912a156acc1845881fbd78bf399c2092af7413f5d6c4782cd066527ea275518b411c1d WHIRLPOOL e03a6d7139ab7b309e0ca1527cb8b52a8f84f5f5d997a510305d2a6ccdd39f33b18c7276df8ac78d92d2a17a66236f582baaa5e374069d3912090544908a0338 +AUX 308-makefile-kernel-dir.patch 2153 SHA256 d76b1028d21b804836e36478d243cd7914435a34f3fe014058e0a9cc7a020653 SHA512 f18339dc8ac4c864b0c2fb234ad2db8f4638a5cd28e8fd11b5593c82107925b41b42e0d0acac52232a373780d79a3e397f70886534cdf889055e86cfda718f62 WHIRLPOOL 70c869bf4efab6843856addd0c5f5a295ed2fe38f9fc2a8ab2ca55523cd39cb92018d6bd0dac75658fa0f5260962c98f0bbd001593f3f11c2d204c693061c5b6 +AUX 308-netdevice.patch 833 SHA256 8f17ce379abda45a8f94e1dcd6e43367273f97f76edd41f9941beb3b1730a751 SHA512 b4ec7c1694968a1843f10e8bfe0dbfdc99bd3b5fc1391456d91a3648b848b82df681a0748d967afa19e728c4d19b79b6a3cb9fd3e15a52a5cab048a6ac9b06a9 WHIRLPOOL b0cabe2ec1b8ca52d427c02593d6057c98d4ed00c578d006de65460138c37a5be76a7938d85f5a35eb6f49ee5e34065ce62b60a51b0ccf021639a59b27aeac8a +AUX hardened.patch 5052 SHA256 191cf892bfb9a6288d110191de824bf6243bc6f48f1e62ab49f3582c7ade5af6 SHA512 52dcca8d9f689f0a0d0ca369c0c7ce0d177de3529d2d1325330eb5a9e940a55e8930bbbe7374793bdf29cbdefac9727e9eb21d00f81ad4f5eddba3a51597b7a5 WHIRLPOOL 539731bc36f3e292403f55d74c353deeb28baa312f726b36d2a6060adf3483dfa2ed011baf93eff941fa754ef62f4d6da86868c40550ee2292c4a711e061bde0 +EBUILD vmware-modules-271.3-r1.ebuild 3734 SHA256 cf23ee820ee71b6d703759fa79a010b4a64cb5f73d9f0f54d1d2f12a61b26f02 SHA512 880c8ac94c639116219300a71ab7abfe1ab38223b52cc25edb2594ae0e394c54709262b121358b7e6eeb70b38335a9f22247c616149b6f94e83b700d28b64b9c WHIRLPOOL 54dea8588a07cf46f8028f9f9f860790e7b76a08638ca82dcaccac5bbb7cb1abd8daeab503263502a56c5d4c1e6b1ced0eaee26dc087cd6c890c133a6c9262f5 +EBUILD vmware-modules-279.6.ebuild 4077 SHA256 e98e005d42845f9cd5e8dfe0a27a52ddd6d8d15ca4d09f460a3be656720c8985 SHA512 ad22fc89112c0be7b9499bab8776850eb67cc77b65f43c73fbc6388b77b416b6ba0b29b4b8d26d2733465b3a941d5909673ba3f848f4218d33c09208aeeef13b WHIRLPOOL ca8177e3ccc2da2eb64a428016c9ad77a502cfb4db1770da084194c37e1132a576524777f3d42d0e57194b74927c646fcebcb442eee39bf3eb25396e132d1194 +EBUILD vmware-modules-304.2.ebuild 4018 SHA256 f7f6fbdace6cc6e0f67069f62d511cceeea5343686052c9f54428ccd30443e01 SHA512 cded892fa639c8fa43b152d47cf3e9331b5bc132d8b4c6db3d8c29267f7e9d1e5d7988c7297b6dbb281df3f0d4a44dd879badddfb148cc134e7a73ec413125e6 WHIRLPOOL bb9c433e93c85185268c720959f3f0155972e005ec97cdead0c0fd5743fe197283f65c6db843b5b4cbf00f4da39d87085675383b6b6a7b4ae2d623047cac2026 +EBUILD vmware-modules-304.3-r1.ebuild 4166 SHA256 55c6bc6bff52f02b605ed006117036c11d71b78dacf156ce758f424e23e6b1eb SHA512 f11c876d5e67a56a3e614f06d70842e909063901e828a10e5299cf751364024893652e1bd5fa611385173e9fc9506b3cb0d4c7d7e1c83b0feae2148af17fbcbb WHIRLPOOL b0005ded232ddd67794235557aa0b270b0373ffacdefe1b78a1c830b466f277f2dd98402bc8c877431df76f958aa47111039bf14c309f6fa40949f9250d57dd9 +EBUILD vmware-modules-308.1.0.ebuild 4840 SHA256 4218d2c265fa12bdce5717a9df1e93881b39579c9f49e7d95bf5931ce5b672de SHA512 c4331f61587add5724a85ec26533fd9b1aea23353a41e8f5af2b7049e543d16e7b79144b8c2af13f6a87cb6a3eaef6dd6625df45c287d26814075a77264aa02f WHIRLPOOL 6a8e0fe0f03295379b554e7fb0f1a69e7c5da45b7442f97ac4ea279a2101cee64c0cdad30f4b1ed64f93a39e00ad9d9ae9228b525632c7e7c8120ec1c3398c03 +MISC ChangeLog 8938 SHA256 9638cdb6f0e956bf309e5d69294ef551ee99ce6b609343588dd6846a611bb073 SHA512 8647d9130e503ee399b9799de4492022542c04fb0ce78b70f9e95428762de42b65db85d09052983bd2791a2a0eb9b09a98b21753e655fba73fe2a4fcf22533f4 WHIRLPOOL 3423d202a2927c84dcfd685cb4a4028abd24f442a080715bc4c52e707c1a5d5ea0f6cef31b527f6ab887da760351f8052b16a27cbe167bd7df6700c907ff1580 +MISC ChangeLog-2015 27252 SHA256 2c987c712dcc1969d5edb0a1f570c73f993f06066e2b57fb6c97d5c11c252ad8 SHA512 c275541dec97b6f348d1bcaa29f95e8e5fb7bea0fad6aa3ff76ba679821bf4517d01173cf5b77cdb1c7c947c1404face3bcf948c1c9befed3a175aff6494eaec WHIRLPOOL 91721ae435f6820e9c71166b9e301c33b591d62bb27a35111c383a0ba2128a1767d9b3b1d8f80604f349f6efcad48fadbc0646b0f9176f96f420177149298f0a +MISC metadata.xml 727 SHA256 fe14276628a6256ab3c4bc6735826869bae771b94d9a9686d9c5059392df5474 SHA512 e9b59883bb997e0e91b50b1ea8c57ad3465ed1f52cba14208bbbda1ad8d4500cba965592f2721763e24bc8a5ffb0706ce43910a92259c69eef3aaacc8c5aca8d WHIRLPOOL 2c9bf3f08c73ac9fa12e8f402a235cd8f437bc80ac5c3ffb315b63299214aa9dd8a3d78f5725a0db634a8a8d62c0e34162ed059a726c97065495fcd2df52f190 diff --git a/app-emulation/vmware-modules/files/271-3.10-00-userns.patch b/app-emulation/vmware-modules/files/271-3.10-00-userns.patch new file mode 100644 index 000000000000..b1b78b76300e --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.10-00-userns.patch @@ -0,0 +1,41 @@ +correctly initializes UID/GID values +gets UID correctly in light of user namespace API +origionally from https://462666.bugs.gentoo.org/attachment.cgi?id=342888 + +--- a/vmblock-only/linux/inode.c 2013-03-20 17:37:48.000000000 +0100 ++++ b/vmblock-only/linux/inode.c 2013-03-20 17:41:22.000000000 +0100 +@@ -135,7 +135,8 @@ + inode->i_size = INODE_TO_IINFO(inode)->nameLen; + inode->i_version = 1; + inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; +- inode->i_uid = inode->i_gid = 0; ++ inode->i_uid = GLOBAL_ROOT_UID; ++ inode->i_gid = GLOBAL_ROOT_GID; + inode->i_op = &LinkInodeOps; + + d_add(dentry, inode); + +--- a/vmci-only/linux/driver.c 2013-03-20 17:57:35.000000000 +0100 ++++ b/vmci-only/linux/driver.c 2013-03-20 17:57:43.000000000 +0100 +@@ -740,7 +740,7 @@ + goto init_release; + } + +- user = current_uid(); ++ user = from_kuid(current_user_ns(), current_uid()); + retval = VMCIContext_InitContext(initBlock.cid, initBlock.flags, + 0 /* Unused */, vmciLinux->userVersion, + &user, &vmciLinux->context); + +--- a/vsock-only/linux/af_vsock.c 2013-03-20 18:01:48.000000000 +0100 ++++ b/vsock-only/linux/af_vsock.c 2013-03-20 18:01:58.000000000 +0100 +@@ -2866,7 +2866,7 @@ + vsk->connectTimeout = psk->connectTimeout; + } else { + vsk->trusted = capable(CAP_NET_ADMIN); +- vsk->owner = current_uid(); ++ vsk->owner = from_kuid(current_user_ns(), current_uid()); + vsk->queuePairSize = VSOCK_DEFAULT_QP_SIZE; + vsk->queuePairMinSize = VSOCK_DEFAULT_QP_SIZE_MIN; + vsk->queuePairMaxSize = VSOCK_DEFAULT_QP_SIZE_MAX; + diff --git a/app-emulation/vmware-modules/files/271-3.10-01-create_proc_entry.patch b/app-emulation/vmware-modules/files/271-3.10-01-create_proc_entry.patch new file mode 100644 index 000000000000..889ae71be47b --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.10-01-create_proc_entry.patch @@ -0,0 +1,28 @@ +uses the new proc_create function to create /proc entries +instead of create_proc_entry which was deprecated: +https://lkml.org/lkml/2013/4/11/215 + +--- a/vmblock-only/linux/control.c 2013-05-21 19:21:19.165750556 +0200 ++++ b/vmblock-only/linux/control.c 2013-05-21 19:22:18.363747723 +0200 +@@ -208,9 +208,10 @@ + VMBlockSetProcEntryOwner(controlProcMountpoint); + + /* Create /proc/fs/vmblock/dev */ +- controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME, +- VMBLOCK_CONTROL_MODE, +- controlProcDirEntry); ++ controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, ++ VMBLOCK_CONTROL_MODE, ++ controlProcDirEntry, ++ &ControlFileOps); + if (!controlProcEntry) { + Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n"); + remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry); +@@ -218,7 +219,6 @@ + return -EINVAL; + } + +- controlProcEntry->proc_fops = &ControlFileOps; + return 0; + } + diff --git a/app-emulation/vmware-modules/files/271-3.10-02-getname.patch b/app-emulation/vmware-modules/files/271-3.10-02-getname.patch new file mode 100644 index 000000000000..05ed8dbcc374 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.10-02-getname.patch @@ -0,0 +1,24 @@ +uses __getname/__putname instead of getname. getname was deprecated +the new code calls __getname (which really is a specific type of +memory allocator, then copies the string safely from user space +into the allocated buffer + +--- vmblock-only/linux/control.c 2014-03-15 15:28:40.871076076 +0100 ++++ vmblock-only/linux/control.c.new 2014-03-15 15:29:15.079074439 +0100 +@@ -279,11 +279,17 @@ + int i; + int retval; + +- name = getname(buf); ++ name = __getname(); + if (IS_ERR(name)) { + return PTR_ERR(name); + } + ++ i = strncpy_from_user(name, buf, PATH_MAX); ++ if (i < 0 || i == PATH_MAX) { ++ __putname(name); ++ return -EINVAL; ++ } ++ + for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) { diff --git a/app-emulation/vmware-modules/files/271-3.10-03-deprecated.patch b/app-emulation/vmware-modules/files/271-3.10-03-deprecated.patch new file mode 100644 index 000000000000..981aabdd1260 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.10-03-deprecated.patch @@ -0,0 +1,89 @@ +undefines DEPRECATED which is unfortunately also defined (as a string) +in <linux/printk.h>. Realistically, this macro isn't even used, so this +doesn't matter much. But it hushes some very loud warnings. + +diff -rupN vmblock-only/shared/vm_assert.h vmblock-only.new/shared/vm_assert.h +--- vmblock-only/shared/vm_assert.h 2014-10-09 21:50:54.221159088 -0400 ++++ vmblock-only.new/shared/vm_assert.h 2014-10-09 21:53:04.612166156 -0400 +@@ -237,11 +237,13 @@ EXTERN void WarningThrottled(uint32 *cou + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL ++ #undef DEPRECATED + #define DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED; %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else ++ #undef DEPRECATED + #define DEPRECATED(_fix) do {} while (0) + #endif + +diff -rupN vmci-only/shared/vm_assert.h vmci-only.new/shared/vm_assert.h +--- vmci-only/shared/vm_assert.h 2014-10-09 21:50:54.222159088 -0400 ++++ vmci-only.new/shared/vm_assert.h 2014-10-09 21:52:52.348165492 -0400 +@@ -237,11 +237,13 @@ EXTERN void WarningThrottled(uint32 *cou + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL ++ #undef DEPRECATED + #define DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED; %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else ++ #undef DEPRECATED + #define DEPRECATED(_fix) do {} while (0) + #endif + +diff -rupN vmmon-only/include/vm_assert.h vmmon-only.new/include/vm_assert.h +--- vmmon-only/include/vm_assert.h 2014-10-09 21:50:54.222159088 -0400 ++++ vmmon-only.new/include/vm_assert.h 2014-10-09 21:52:36.877164653 -0400 +@@ -237,11 +237,13 @@ EXTERN void WarningThrottled(uint32 *cou + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL ++ #undef DEPRECATED + #define DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED; %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else ++ #undef DEPRECATED + #define DEPRECATED(_fix) do {} while (0) + #endif + +diff -rupN vmnet-only/vm_assert.h vmnet-only.new/vm_assert.h +--- vmnet-only/vm_assert.h 2014-10-09 21:50:54.222159088 -0400 ++++ vmnet-only.new/vm_assert.h 2014-10-09 21:52:57.736165784 -0400 +@@ -237,11 +237,13 @@ EXTERN void WarningThrottled(uint32 *cou + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL ++ #undef DEPRECATED + #define DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED; %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else ++ #undef DEPRECATED + #define DEPRECATED(_fix) do {} while (0) + #endif + +diff -rupN vsock-only/shared/vm_assert.h vsock-only.new/shared/vm_assert.h +--- vsock-only/shared/vm_assert.h 2014-10-09 21:50:54.222159088 -0400 ++++ vsock-only.new/shared/vm_assert.h 2014-10-09 21:52:45.352165112 -0400 +@@ -237,11 +237,13 @@ EXTERN void WarningThrottled(uint32 *cou + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL ++ #undef DEPRECATED + #define DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED; %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else ++ #undef DEPRECATED + #define DEPRECATED(_fix) do {} while (0) + #endif + diff --git a/app-emulation/vmware-modules/files/271-3.10-04-unused-typedef.patch b/app-emulation/vmware-modules/files/271-3.10-04-unused-typedef.patch new file mode 100644 index 000000000000..d5129ec689a4 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.10-04-unused-typedef.patch @@ -0,0 +1,115 @@ +hushes warnings about unused typedefs which are part of the "static assert" +technique that the code uses. We simply add an "__attribute__((unused)) to each of them + +--- vmblock-only/shared/vm_assert.h 2014-10-07 22:43:39.519402467 -0400 ++++ vmblock-only/shared/vm_assert.h 2014-10-07 22:48:01.346409957 -0400 +@@ -317,7 +317,7 @@ EXTERN void WarningThrottled(uint32 *cou + #define ASSERT_ON_COMPILE(e) \ + do { \ + enum { AssertOnCompileMisused = ((e) ? 1 : -1) }; \ +- typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ ++ __attribute__((unused)) typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ + } while (0) + + +--- vmci-only/shared/vm_assert.h 2014-10-07 22:43:39.519402467 -0400 ++++ vmci-only/shared/vm_assert.h 2014-10-07 22:47:51.829409685 -0400 +@@ -317,7 +317,7 @@ EXTERN void WarningThrottled(uint32 *cou + #define ASSERT_ON_COMPILE(e) \ + do { \ + enum { AssertOnCompileMisused = ((e) ? 1 : -1) }; \ +- typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ ++ __attribute__((unused)) typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ + } while (0) + + +--- vmmon-only/include/vm_assert.h 2014-10-07 22:43:39.520402467 -0400 ++++ vmmon-only/include/vm_assert.h 2014-10-07 22:47:39.246409325 -0400 +@@ -317,7 +317,7 @@ EXTERN void WarningThrottled(uint32 *cou + #define ASSERT_ON_COMPILE(e) \ + do { \ + enum { AssertOnCompileMisused = ((e) ? 1 : -1) }; \ +- typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ ++ __attribute__((unused)) typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ + } while (0) + + +--- vmnet-only/vm_assert.h 2014-10-07 22:43:39.520402467 -0400 ++++ vmnet-only/vm_assert.h 2014-10-07 22:47:55.804409799 -0400 +@@ -317,7 +317,7 @@ EXTERN void WarningThrottled(uint32 *cou + #define ASSERT_ON_COMPILE(e) \ + do { \ + enum { AssertOnCompileMisused = ((e) ? 1 : -1) }; \ +- typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ ++ __attribute__((unused)) typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ + } while (0) + + +--- vsock-only/shared/vm_assert.h 2014-10-07 22:47:11.595408534 -0400 ++++ vsock-only/shared/vm_assert.h 2014-10-07 22:45:55.715406363 -0400 +@@ -317,7 +317,7 @@ EXTERN void WarningThrottled(uint32 *cou + #define ASSERT_ON_COMPILE(e) \ + do { \ + enum { AssertOnCompileMisused = ((e) ? 1 : -1) }; \ +- typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ ++ __attribute__((unused)) typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ + } while (0) + + +--- vsock-only/shared/vm_atomic.h 2013-11-05 23:33:27.000000000 -0500 ++++ vsock-only/shared/vm_atomic.h 2014-10-07 22:53:06.024418673 -0400 +@@ -2394,7 +2394,7 @@ Atomic_TestBit64(Atomic_uint64 *var, // + && 8 * sizeof (out) == size \ + && 8 * sizeof (cast) == size \ + ? 1 : -1 }; \ +- typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ ++ __attribute__((unused)) typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ + } \ + \ + \ +--- vmci-only/shared/vm_atomic.h 2013-11-05 23:33:27.000000000 -0500 ++++ vmci-only/shared/vm_atomic.h 2014-10-07 22:53:24.873419213 -0400 +@@ -2394,7 +2394,7 @@ Atomic_TestBit64(Atomic_uint64 *var, // + && 8 * sizeof (out) == size \ + && 8 * sizeof (cast) == size \ + ? 1 : -1 }; \ +- typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ ++ __attribute__((unused)) typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ + } \ + \ + \ + +--- vmblock-only/shared/vm_atomic.h 2013-11-05 23:33:27.000000000 -0500 ++++ vmblock-only/shared/vm_atomic.h 2014-10-07 22:53:31.073419390 -0400 +@@ -2394,7 +2394,7 @@ Atomic_TestBit64(Atomic_uint64 *var, // + && 8 * sizeof (out) == size \ + && 8 * sizeof (cast) == size \ + ? 1 : -1 }; \ +- typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ ++ __attribute__((unused)) typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ + } \ + \ + +--- vmnet-only/vm_atomic.h 2013-11-06 00:40:52.000000000 -0500 ++++ vmnet-only/vm_atomic.h 2014-10-07 23:04:50.637438831 -0400 +@@ -2394,7 +2394,7 @@ Atomic_TestBit64(Atomic_uint64 *var, // + && 8 * sizeof (out) == size \ + && 8 * sizeof (cast) == size \ + ? 1 : -1 }; \ +- typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ ++ __attribute__((unused)) typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ + } \ + \ + \ + +--- vmmon-only/include/vm_atomic.h 2013-11-06 00:40:52.000000000 -0500 ++++ vmmon-only/include/vm_atomic.h 2014-10-07 23:04:50.637438831 -0400 +@@ -2394,7 +2394,7 @@ Atomic_TestBit64(Atomic_uint64 *var, // + && 8 * sizeof (out) == size \ + && 8 * sizeof (cast) == size \ + ? 1 : -1 }; \ +- typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ ++ __attribute__((unused)) typedef char AssertOnCompileFailed[AssertOnCompileMisused]; \ + } \ + \ + \ diff --git a/app-emulation/vmware-modules/files/271-3.10-05-dentry.patch b/app-emulation/vmware-modules/files/271-3.10-05-dentry.patch new file mode 100644 index 000000000000..f4f59d977408 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.10-05-dentry.patch @@ -0,0 +1,34 @@ +starting with kernel 3.6, d_revalidate takes an unsigned int "flags" +as the second argument, not a nameidata pointer! see fs/namei.c +for implementation + +diff -Naur vmblock-only/linux/dentry.c vmblock-only/linux/dentry.c +--- vmblock-only/linux/dentry.c 2013-11-05 23:33:26.000000000 -0500 ++++ vmblock-only/linux/dentry.c 2014-04-26 10:58:03.062635343 -0400 +@@ -32,7 +32,7 @@ + #include "block.h" + + +-static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd); ++static int DentryOpRevalidate(struct dentry *dentry, unsigned int flags); + + struct dentry_operations LinkDentryOps = { + .d_revalidate = DentryOpRevalidate, +@@ -60,7 +60,7 @@ + + static int + DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating +- struct nameidata *nd) // IN: lookup flags & intent ++ unsigned int flags) // IN: lookup flags & intent + { + VMBlockInodeInfo *iinfo; + struct nameidata actualNd; +@@ -101,7 +101,7 @@ + if (actualDentry && + actualDentry->d_op && + actualDentry->d_op->d_revalidate) { +- return actualDentry->d_op->d_revalidate(actualDentry, nd); ++ return actualDentry->d_op->d_revalidate(actualDentry, flags); + } + + if (compat_path_lookup(iinfo->name, 0, &actualNd)) { diff --git a/app-emulation/vmware-modules/files/271-3.10-06-inode.patch b/app-emulation/vmware-modules/files/271-3.10-06-inode.patch new file mode 100644 index 000000000000..01c88930899c --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.10-06-inode.patch @@ -0,0 +1,36 @@ +starting with kernel 3.6, d_revalidate takes an unsigned int "flags" +as the second argument, not a nameidata pointer! see fs/namei.c +for implementation. Also changing vfs_follow_link to nd_set_link. +See: https://lkml.org/lkml/2013/9/9/236 + +diff -Naur vmblock-only/linux/inode.c vmblock-only/linux/inode.c +--- vmblock-only/linux/inode.c 2013-11-05 23:33:26.000000000 -0500 ++++ vmblock-only/linux/inode.c 2014-04-26 10:58:03.063635343 -0400 +@@ -36,7 +36,7 @@ + + /* Inode operations */ + static struct dentry *InodeOpLookup(struct inode *dir, +- struct dentry *dentry, struct nameidata *nd); ++ struct dentry *dentry, unsigned int flags); + static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); +@@ -75,7 +75,7 @@ + static struct dentry * + InodeOpLookup(struct inode *dir, // IN: parent directory's inode + struct dentry *dentry, // IN: dentry to lookup +- struct nameidata *nd) // IN: lookup intent and information ++ unsigned int flags) // IN: lookup intent and information + { + char *filename; + struct inode *inode; +@@ -221,7 +221,8 @@ + goto out; + } + +- ret = vfs_follow_link(nd, iinfo->name); ++ nd_set_link(nd, iinfo->name); ++ ret = 0; + + out: + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) diff --git a/app-emulation/vmware-modules/files/271-3.10-07-hub.patch b/app-emulation/vmware-modules/files/271-3.10-07-hub.patch new file mode 100644 index 000000000000..eebe4a23b304 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.10-07-hub.patch @@ -0,0 +1,26 @@ +fixes a bug where sizeof was being used on a pointer when they clearly +meant to use the size of the array referred to. Fortunately, the amount is +always smaller than the actual size of the buffer, so likely not a security issue +(and was fixed in vmware-workstaiton 10 + +diff -rupN vmnet-only/hub.c vmnet-only.new/hub.c +--- vmnet-only/hub.c 2013-11-06 00:40:52.000000000 -0500 ++++ vmnet-only.new/hub.c 2014-10-07 18:45:34.403918680 -0400 +@@ -129,7 +129,7 @@ VNetHubFindHubByID(uint8 idNum[VNET_PVN_ + { + VNetHub *currHub = vnetHub; + while (currHub && (currHub->hubType != HUB_TYPE_PVN || +- memcmp(idNum, currHub->id.pvnID, sizeof idNum))) { ++ memcmp(idNum, currHub->id.pvnID, VNET_PVN_ID_LEN))) { + currHub = currHub->next; + } + return currHub; +@@ -312,7 +312,7 @@ VNetHubAlloc(Bool allocPvn, // IN: TRUE + + if (allocPvn) { + hub->hubType = HUB_TYPE_PVN; +- memcpy(hub->id.pvnID, id, sizeof id); ++ memcpy(hub->id.pvnID, id, VNET_PVN_ID_LEN); + ++pvnInstance; + } else { + hub->hubType = HUB_TYPE_VNET; diff --git a/app-emulation/vmware-modules/files/271-3.10.0.patch b/app-emulation/vmware-modules/files/271-3.10.0.patch new file mode 100644 index 000000000000..7795b18f5d7e --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.10.0.patch @@ -0,0 +1,809 @@ +--- a/vmnet-only/bridge.c ++++ b/vmnet-only/bridge.c +@@ -105,8 +105,6 @@ static Bool VNetBridgeCycleDetect(VNetJack *this, int generation); + static Bool VNetBridgeIsDeviceWireless(struct net_device *dev); + static void VNetBridgePortsChanged(VNetJack *this); + static int VNetBridgeIsBridged(VNetJack *this); +-static int VNetBridgeProcRead(char *page, char **start, off_t off, +- int count, int *eof, void *data); + static void VNetBridgeComputeHeaderPosIPv6(struct sk_buff *skb); + static PacketStatus VNetCallSMACFunc(struct SMACState *state, + struct sk_buff **skb, void *startOfData, +@@ -225,6 +223,53 @@ VNetBridgeDevCompatible(VNetBridge *bridge, // IN: Bridge + /* + *---------------------------------------------------------------------- + * ++ * VNetBridgeProcShow -- ++ * ++ * Callback for read operation on this bridge entry in vnets proc fs. ++ * ++ * Results: ++ * Length of read operation. ++ * ++ * Side effects: ++ * None. ++ * ++ *---------------------------------------------------------------------- ++ */ ++ ++int ++VNetBridgeProcShow(struct seq_file *seqf, // IN/OUT: buffer to write into ++ void *data) // IN: client data - pointer to bridge ++{ ++ VNetBridge *bridge = (VNetBridge*)data; ++ ++ if (!bridge) { ++ return 0; ++ } ++ ++ VNetPrintPort(&bridge->port, seqf); ++ ++ seq_printf(seqf, "dev %s ", bridge->name); ++ ++ seq_printf(seqf, "\n"); ++ ++ return 0; ++} ++ ++static int proc_bridge_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, VNetBridgeProcShow, PDE_DATA(inode)); ++} ++ ++static const struct file_operations proc_bridge_fops = { ++ .open = proc_bridge_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = seq_release, ++}; ++ ++/* ++ *---------------------------------------------------------------------- ++ * + * VNetBridge_Create -- + * + * Creates a bridge. Allocates struct, allocates internal device, +@@ -319,17 +364,14 @@ VNetBridge_Create(const char *devName, // IN: name of device (e.g., "eth0") + * Make proc entry for this jack. + */ + +- retval = VNetProc_MakeEntry(bridge->port.jack.name, S_IFREG, +- &bridge->port.jack.procEntry); ++ retval = VNetProc_MakeEntryOps(bridge->port.jack.name, S_IFREG, ++ &bridge->port.jack.procEntry, &proc_bridge_fops, bridge); + if (retval) { + if (retval == -ENXIO) { + bridge->port.jack.procEntry = NULL; + } else { + goto out; + } +- } else { +- bridge->port.jack.procEntry->read_proc = VNetBridgeProcRead; +- bridge->port.jack.procEntry->data = bridge; + } + + /* +@@ -1719,45 +1761,3 @@ VNetBridgeReceiveFromDev(struct sk_buff *skb, // IN: packet to receive + return 0; + } + +- +-/* +- *---------------------------------------------------------------------- +- * +- * VNetBridgeProcRead -- +- * +- * Callback for read operation on this bridge entry in vnets proc fs. +- * +- * Results: +- * Length of read operation. +- * +- * Side effects: +- * None. +- * +- *---------------------------------------------------------------------- +- */ +- +-int +-VNetBridgeProcRead(char *page, // IN/OUT: buffer to write into +- char **start, // OUT: 0 if file < 4k, else offset into page +- off_t off, // IN: (unused) offset of read into the file +- int count, // IN: (unused) maximum number of bytes to read +- int *eof, // OUT: TRUE if there is nothing more to read +- void *data) // IN: client data - pointer to bridge +-{ +- VNetBridge *bridge = (VNetBridge*)data; +- int len = 0; +- +- if (!bridge) { +- return len; +- } +- +- len += VNetPrintPort(&bridge->port, page+len); +- +- len += sprintf(page+len, "dev %s ", bridge->name); +- +- len += sprintf(page+len, "\n"); +- +- *start = 0; +- *eof = 1; +- return len; +-} +--- a/vmnet-only/driver.c ++++ b/vmnet-only/driver.c +@@ -1785,21 +1785,17 @@ VNetSetMACUnique(VNetPort *port, // IN: + *---------------------------------------------------------------------- + */ + +-int ++void + VNetPrintJack(const VNetJack *jack, // IN: jack +- char *buf) // OUT: info about jack ++ struct seq_file *seqf) // OUT: info about jack + { +- int len = 0; +- + read_lock(&vnetPeerLock); + if (!jack->peer) { +- len += sprintf(buf+len, "connected not "); ++ seq_printf(seqf, "connected not "); + } else { +- len += sprintf(buf+len, "connected %s ", jack->peer->name); ++ seq_printf(seqf, "connected %s ", jack->peer->name); + } + read_unlock(&vnetPeerLock); +- +- return len; + } + + +@@ -1819,52 +1815,48 @@ VNetPrintJack(const VNetJack *jack, // IN: jack + *---------------------------------------------------------------------- + */ + +-int ++void + VNetPrintPort(const VNetPort *port, // IN: port +- char *buf) // OUT: info about port ++ struct seq_file *seqf) // OUT: info about port + { +- int len = 0; ++ VNetPrintJack(&port->jack, seqf); + +- len += VNetPrintJack(&port->jack, buf+len); +- +- len += sprintf(buf+len, "mac %02x:%02x:%02x:%02x:%02x:%02x ", ++ seq_printf(seqf, "mac %02x:%02x:%02x:%02x:%02x:%02x ", + port->paddr[0], port->paddr[1], port->paddr[2], + port->paddr[3], port->paddr[4], port->paddr[5]); + +- len += sprintf(buf+len, "ladrf %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x ", ++ seq_printf(seqf, "ladrf %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x ", + port->ladrf[0], port->ladrf[1], port->ladrf[2], + port->ladrf[3], port->ladrf[4], port->ladrf[5], + port->ladrf[6], port->ladrf[7]); + +- len += sprintf(buf+len, "flags IFF_RUNNING"); ++ seq_printf(seqf, "flags IFF_RUNNING"); + + if (port->flags & IFF_UP) { +- len += sprintf(buf+len, ",IFF_UP"); ++ seq_printf(seqf, ",IFF_UP"); + } + + if (port->flags & IFF_BROADCAST) { +- len += sprintf(buf+len, ",IFF_BROADCAST"); ++ seq_printf(seqf, ",IFF_BROADCAST"); + } + + if (port->flags & IFF_DEBUG) { +- len += sprintf(buf+len, ",IFF_DEBUG"); ++ seq_printf(seqf, ",IFF_DEBUG"); + } + + if (port->flags & IFF_PROMISC) { +- len += sprintf(buf+len, ",IFF_PROMISC"); ++ seq_printf(seqf, ",IFF_PROMISC"); + } + + if (port->flags & IFF_MULTICAST) { +- len += sprintf(buf+len, ",IFF_MULTICAST"); ++ seq_printf(seqf, ",IFF_MULTICAST"); + } + + if (port->flags & IFF_ALLMULTI) { +- len += sprintf(buf+len, ",IFF_ALLMULTI"); ++ seq_printf(seqf, ",IFF_ALLMULTI"); + } + +- len += sprintf(buf+len, " "); +- +- return len; ++ seq_printf(seqf, " "); + } + + +--- a/vmnet-only/hub.c ++++ b/vmnet-only/hub.c +@@ -25,6 +25,7 @@ + #include <linux/sched.h> + #include <linux/slab.h> + #include <linux/poll.h> ++#include <linux/seq_file.h> + + #include <linux/netdevice.h> + #include <linux/etherdevice.h> +@@ -71,8 +72,6 @@ static void VNetHubReceive(VNetJack *this, struct sk_buff *skb); + static Bool VNetHubCycleDetect(VNetJack *this, int generation); + static void VNetHubPortsChanged(VNetJack *this); + static int VNetHubIsBridged(VNetJack *this); +-static int VNetHubProcRead(char *page, char **start, off_t off, +- int count, int *eof, void *data); + + static VNetHub *vnetHub; + static DEFINE_SPINLOCK(vnetHubLock); +@@ -241,6 +240,53 @@ VNetHub_AllocPvn(uint8 id[]) // IN: the PVN ID to alloc on + /* + *---------------------------------------------------------------------- + * ++ * VNetHubProcShow -- ++ * ++ * Callback for read operation on hub entry in vnets proc fs. ++ * ++ * Results: ++ * Length of read operation. ++ * ++ * Side effects: ++ * None. ++ * ++ *---------------------------------------------------------------------- ++ */ ++ ++int ++VNetHubProcShow(struct seq_file *seqf, // IN/OUT: buffer to write into ++ void *data) // IN: client data - not used ++{ ++ VNetJack *jack = (VNetJack*)data; ++ VNetHub *hub; ++ ++ if (!jack || !jack->private) { ++ return 0; ++ } ++ hub = (VNetHub*)jack->private; ++ ++ VNetPrintJack(jack, seqf); ++ ++ seq_printf(seqf, "tx %u ", hub->stats[jack->index].tx); ++ seq_printf(seqf, "\n"); ++ return 0; ++} ++ ++static int proc_hub_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, VNetHubProcShow, PDE_DATA(inode)); ++} ++ ++static const struct file_operations proc_hub_fops = { ++ .open = proc_hub_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = seq_release, ++}; ++ ++/* ++ *---------------------------------------------------------------------- ++ * + * VNetHubAlloc -- + * + * Allocate a jack on this hub. +@@ -354,7 +400,7 @@ VNetHubAlloc(Bool allocPvn, // IN: TRUE for PVN, FALSE for vnet + * Make proc entry for this jack. + */ + +- retval = VNetProc_MakeEntry(jack->name, S_IFREG, &jack->procEntry); ++ retval = VNetProc_MakeEntryOps(jack->name, S_IFREG, &jack->procEntry, &proc_hub_fops, jack); + if (retval) { + if (retval == -ENXIO) { + jack->procEntry = NULL; +@@ -362,9 +408,6 @@ VNetHubAlloc(Bool allocPvn, // IN: TRUE for PVN, FALSE for vnet + hub->used[i] = FALSE; + return NULL; + } +- } else { +- jack->procEntry->read_proc = VNetHubProcRead; +- jack->procEntry->data = jack; + } + + /* +@@ -686,46 +729,3 @@ VNetHubIsBridged(VNetJack *this) + } + + +-/* +- *---------------------------------------------------------------------- +- * +- * VNetHubProcRead -- +- * +- * Callback for read operation on hub entry in vnets proc fs. +- * +- * Results: +- * Length of read operation. +- * +- * Side effects: +- * None. +- * +- *---------------------------------------------------------------------- +- */ +- +-int +-VNetHubProcRead(char *page, // IN/OUT: buffer to write into +- char **start, // OUT: 0 if file < 4k, else offset into page +- off_t off, // IN: offset of read into the file +- int count, // IN: maximum number of bytes to read +- int *eof, // OUT: TRUE if there is nothing more to read +- void *data) // IN: client data - not used +-{ +- VNetJack *jack = (VNetJack*)data; +- VNetHub *hub; +- int len = 0; +- +- if (!jack || !jack->private) { +- return len; +- } +- hub = (VNetHub*)jack->private; +- +- len += VNetPrintJack(jack, page+len); +- +- len += sprintf(page+len, "tx %u ", hub->stats[jack->index].tx); +- +- len += sprintf(page+len, "\n"); +- +- *start = 0; +- *eof = 1; +- return len; +-} +--- a/vmnet-only/netif.c ++++ b/vmnet-only/netif.c +@@ -62,8 +62,6 @@ static int VNetNetifStartXmit(struct sk_buff *skb, struct net_device *dev); + static struct net_device_stats *VNetNetifGetStats(struct net_device *dev); + static int VNetNetifSetMAC(struct net_device *dev, void *addr); + static void VNetNetifSetMulticast(struct net_device *dev); +-static int VNetNetIfProcRead(char *page, char **start, off_t off, +- int count, int *eof, void *data); + + /* + *---------------------------------------------------------------------- +@@ -116,6 +114,53 @@ VNetNetIfSetup(struct net_device *dev) // IN: + + } + ++/* ++ *---------------------------------------------------------------------- ++ * ++ * VNetNetIfProcShow -- ++ * ++ * Callback for read operation on this netif entry in vnets proc fs. ++ * ++ * Results: ++ * Length of read operation. ++ * ++ * Side effects: ++ * None. ++ * ++ *---------------------------------------------------------------------- ++ */ ++ ++int ++VNetNetIfProcShow(struct seq_file *seqf, // IN/OUT: buffer to write into ++ void *data) // IN: client data ++{ ++ VNetNetIF *netIf = data; ++ ++ if (!netIf) { ++ return 0; ++ } ++ ++ VNetPrintPort(&netIf->port, seqf); ++ ++ seq_printf(seqf, "dev %s ", netIf->dev->name); ++ ++ seq_printf(seqf, "\n"); ++ ++ return 0; ++} ++ ++static int proc_netif_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, VNetNetIfProcShow, PDE_DATA(inode)); ++} ++ ++static const struct file_operations proc_netif_fops = { ++ .open = proc_netif_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = seq_release, ++}; ++ + + /* + *---------------------------------------------------------------------- +@@ -180,16 +225,13 @@ VNetNetIf_Create(char *devName, // IN: + * Make proc entry for this jack. + */ + +- retval = VNetProc_MakeEntry(netIf->port.jack.name, S_IFREG, +- &netIf->port.jack.procEntry); ++ retval = VNetProc_MakeEntryOps(netIf->port.jack.name, S_IFREG, ++ &netIf->port.jack.procEntry, &proc_netif_fops, netIf); + if (retval) { + netIf->port.jack.procEntry = NULL; + if (retval != -ENXIO) { + goto outFreeDev; + } +- } else { +- netIf->port.jack.procEntry->read_proc = VNetNetIfProcRead; +- netIf->port.jack.procEntry->data = netIf; + } + + /* +@@ -553,45 +595,3 @@ VNetNetifGetStats(struct net_device *dev) // IN: + return &netIf->stats; + } + +- +-/* +- *---------------------------------------------------------------------- +- * +- * VNetNetIfProcRead -- +- * +- * Callback for read operation on this netif entry in vnets proc fs. +- * +- * Results: +- * Length of read operation. +- * +- * Side effects: +- * None. +- * +- *---------------------------------------------------------------------- +- */ +- +-int +-VNetNetIfProcRead(char *page, // IN/OUT: buffer to write into +- char **start, // OUT: 0 if file < 4k, else offset into page +- off_t off, // IN: (unused) offset of read into the file +- int count, // IN: (unused) maximum number of bytes to read +- int *eof, // OUT: TRUE if there is nothing more to read +- void *data) // IN: client data +-{ +- VNetNetIF *netIf = data; +- int len = 0; +- +- if (!netIf) { +- return len; +- } +- +- len += VNetPrintPort(&netIf->port, page+len); +- +- len += sprintf(page+len, "dev %s ", netIf->dev->name); +- +- len += sprintf(page+len, "\n"); +- +- *start = 0; +- *eof = 1; +- return len; +-} +--- a/vmnet-only/procfs.c ++++ b/vmnet-only/procfs.c +@@ -45,10 +45,6 @@ + + #if defined(CONFIG_PROC_FS) + +-static int VNetProcMakeEntryInt(VNetProcEntry *parent, char *name, int mode, +- VNetProcEntry **ret); +-static void VNetProcRemoveEntryInt(VNetProcEntry *node, VNetProcEntry *parent); +- + static VNetProcEntry *base = NULL; + + +@@ -71,7 +67,12 @@ static VNetProcEntry *base = NULL; + int + VNetProc_Init(void) + { +- return VNetProcMakeEntryInt(NULL, "vmnet", S_IFDIR, &base); ++ base = proc_mkdir("vmnet", NULL); ++ if(IS_ERR(base)) { ++ base = NULL; ++ return PTR_ERR(base); ++ } ++ return 0; + } + + +@@ -94,14 +95,14 @@ VNetProc_Init(void) + void + VNetProc_Cleanup(void) + { +- VNetProcRemoveEntryInt(base, NULL); ++ proc_remove(base); + base = NULL; + } + + /* + *---------------------------------------------------------------------- + * +- * VNetProcMakeEntryInt -- ++ * VNetProc_MakeEntryOps -- + * + * Make an entry in the vnets proc file system. + * +@@ -116,72 +117,21 @@ VNetProc_Cleanup(void) + */ + + int +-VNetProcMakeEntryInt(VNetProcEntry *parent, // IN: +- char *name, // IN: ++VNetProc_MakeEntryOps(char *name, // IN: + int mode, // IN: +- VNetProcEntry **ret) // OUT: ++ VNetProcEntry **ret, ++ const struct file_operations *fops, ++ void *data ++ ) // OUT: + { + VNetProcEntry *ent; +- ent = create_proc_entry(name, mode, parent); ++ ent = proc_create_data(name, mode, base, fops, data); + *ret = ent; + if (!ent) + return -ENOMEM; + return 0; + } + +- +-/* +- *---------------------------------------------------------------------- +- * +- * VNetProcRemoveEntryInt -- +- * +- * Remove a previously installed proc entry. +- * +- * Results: +- * None. +- * +- * Side effects: +- * None. +- * +- *---------------------------------------------------------------------- +- */ +- +-void +-VNetProcRemoveEntryInt(VNetProcEntry *node, +- VNetProcEntry *parent) +-{ +- if (node) { +- remove_proc_entry(node->name, parent); +- } +-} +- +- +-/* +- *---------------------------------------------------------------------- +- * +- * VNetProc_MakeEntry -- +- * +- * Make an entry in the vnets proc file system. +- * +- * Results: +- * errno. If errno is 0 and ret is non NULL then ret is filled +- * in with the resulting proc entry. +- * +- * Side effects: +- * None. +- * +- *---------------------------------------------------------------------- +- */ +- +-int +-VNetProc_MakeEntry(char *name, // IN: +- int mode, // IN: +- VNetProcEntry **ret) // OUT: +-{ +- return VNetProcMakeEntryInt(base, name, mode, ret); +-} +- +- + /* + *---------------------------------------------------------------------- + * +@@ -201,7 +151,8 @@ VNetProc_MakeEntry(char *name, // IN: + void + VNetProc_RemoveEntry(VNetProcEntry *node) + { +- VNetProcRemoveEntryInt(node, base); ++ if(node) ++ proc_remove(node); + } + + +@@ -253,31 +204,6 @@ VNetProc_Cleanup(void) + } + + +-/* +- *---------------------------------------------------------------------- +- * +- * VNetProc_MakeEntry -- +- * +- * Make an entry in the vnets proc file system. +- * +- * Results: +- * errno. If errno is 0 and ret is non NULL then ret is filled +- * in with the resulting proc entry. +- * +- * Side effects: +- * None. +- * +- *---------------------------------------------------------------------- +- */ +- +-int +-VNetProc_MakeEntry(char *name, +- int mode, +- VNetProcEntry **ret) +-{ +- return -ENXIO; +-} +- + + /* + *---------------------------------------------------------------------- +--- a/vmnet-only/userif.c ++++ b/vmnet-only/userif.c +@@ -389,7 +389,7 @@ VNetUserIfReceive(VNetJack *this, // IN + /* + *---------------------------------------------------------------------- + * +- * VNetUserIfProcRead -- ++ * VNetUserIfProcShow -- + * + * Callback for read operation on this userif entry in vnets proc fs. + * +@@ -403,30 +403,23 @@ VNetUserIfReceive(VNetJack *this, // IN + */ + + static int +-VNetUserIfProcRead(char *page, // IN/OUT: buffer to write into +- char **start, // OUT: 0 if file < 4k, else offset into +- // page +- off_t off, // IN: offset of read into the file +- int count, // IN: maximum number of bytes to read +- int *eof, // OUT: TRUE if there is nothing more to +- // read ++VNetUserIfProcShow(struct seq_file *seqf, // IN/OUT: buffer to write into + void *data) // IN: client data - not used + { + VNetUserIF *userIf = (VNetUserIF*)data; +- int len = 0; + + if (!userIf) { +- return len; ++ return 0; + } + +- len += VNetPrintPort(&userIf->port, page+len); ++ VNetPrintPort(&userIf->port, seqf); + +- len += sprintf(page+len, "read %u written %u queued %u ", ++ seq_printf(seqf, "read %u written %u queued %u ", + userIf->stats.read, + userIf->stats.written, + userIf->stats.queued); + +- len += sprintf(page+len, ++ seq_printf(seqf, + "dropped.down %u dropped.mismatch %u " + "dropped.overflow %u dropped.largePacket %u", + userIf->stats.droppedDown, +@@ -434,13 +427,23 @@ VNetUserIfProcRead(char *page, // IN/OUT: buffer to write into + userIf->stats.droppedOverflow, + userIf->stats.droppedLargePacket); + +- len += sprintf(page+len, "\n"); ++ seq_printf(seqf, "\n"); + +- *start = 0; +- *eof = 1; +- return len; ++ return 0; ++} ++ ++static int proc_userif_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, VNetUserIfProcShow, PDE_DATA(inode)); + } + ++static const struct file_operations proc_userif_fops = { ++ .open = proc_userif_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = seq_release, ++}; ++ + + /* + *---------------------------------------------------------------------- +@@ -1036,8 +1039,8 @@ VNetUserIf_Create(VNetPort **ret) // OUT + * Make proc entry for this jack. + */ + +- retval = VNetProc_MakeEntry(userIf->port.jack.name, S_IFREG, +- &userIf->port.jack.procEntry); ++ retval = VNetProc_MakeEntryOps(userIf->port.jack.name, S_IFREG, ++ &userIf->port.jack.procEntry, &proc_userif_fops, userIf); + if (retval) { + if (retval == -ENXIO) { + userIf->port.jack.procEntry = NULL; +@@ -1045,9 +1048,6 @@ VNetUserIf_Create(VNetPort **ret) // OUT + kfree(userIf); + return retval; + } +- } else { +- userIf->port.jack.procEntry->read_proc = VNetUserIfProcRead; +- userIf->port.jack.procEntry->data = userIf; + } + + /* +--- a/vmnet-only/vnetInt.h ++++ b/vmnet-only/vnetInt.h +@@ -171,12 +171,14 @@ VNetJack *VNetDisconnect(VNetJack *jack); + + void VNetSend(const VNetJack *jack, struct sk_buff *skb); + +-int VNetProc_MakeEntry(char *name, int mode, +- VNetProcEntry **ret); ++int VNetProc_MakeEntryOps(char *name, int mode, ++ VNetProcEntry **ret, ++ const struct file_operations *fops, ++ void *data); + + void VNetProc_RemoveEntry(VNetProcEntry *node); + +-int VNetPrintJack(const VNetJack *jack, char *buf); ++void VNetPrintJack(const VNetJack *jack, struct seq_file *seqf); + + int VNet_MakeMACAddress(VNetPort *port); + +@@ -196,7 +198,7 @@ Bool VNetPacketMatch(const uint8 *destAddr, const uint8 *ifAddr, + + Bool VNetCycleDetectIf(const char *name, int generation); + +-int VNetPrintPort(const VNetPort *port, char *buf); ++void VNetPrintPort(const VNetPort *port, struct seq_file *seqf); + + int VNetSnprintf(char *str, size_t size, const char *format, ...); + +-- +--- a/vmblock-only/linux/control.c 2013-05-21 19:21:19.165750556 +0200 ++++ b/vmblock-only/linux/control.c 2013-05-21 19:22:18.363747723 +0200 +@@ -208,9 +208,10 @@ + VMBlockSetProcEntryOwner(controlProcMountpoint); + + /* Create /proc/fs/vmblock/dev */ +- controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME, +- VMBLOCK_CONTROL_MODE, +- controlProcDirEntry); ++ controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, ++ VMBLOCK_CONTROL_MODE, ++ controlProcDirEntry, ++ &ControlFileOps); + if (!controlProcEntry) { + Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n"); + remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry); +@@ -218,7 +219,6 @@ + return -EINVAL; + } + +- controlProcEntry->proc_fops = &ControlFileOps; + return 0; + } + diff --git a/app-emulation/vmware-modules/files/271-3.11-00-readdir.patch b/app-emulation/vmware-modules/files/271-3.11-00-readdir.patch new file mode 100644 index 000000000000..b2f76d3e2b30 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.11-00-readdir.patch @@ -0,0 +1,41 @@ +replaces usage of vfs_readdir with iterate_dir. origionally found here: +https://bugs.gentoo.org/show_bug.cgi?id=508204 + +diff -Naur vmblock-only/linux/file.c vmblock-only/linux/file.c +--- vmblock-only/linux/file.c 2013-11-05 23:33:26.000000000 -0500 ++++ vmblock-only/linux/file.c 2014-04-26 10:58:03.062635343 -0400 +@@ -166,11 +166,9 @@ + + static int + FileOpReaddir(struct file *file, // IN +- void *dirent, // IN +- filldir_t filldir) // IN ++ struct dir_context *ctx) + { + int ret; +- FilldirInfo info; + struct file *actualFile; + + if (!file) { +@@ -184,11 +182,8 @@ + return -EINVAL; + } + +- info.filldir = filldir; +- info.dirent = dirent; +- + actualFile->f_pos = file->f_pos; +- ret = vfs_readdir(actualFile, Filldir, &info); ++ ret = iterate_dir(actualFile, ctx); + file->f_pos = actualFile->f_pos; + + return ret; +@@ -237,7 +232,7 @@ + + + struct file_operations RootFileOps = { +- .readdir = FileOpReaddir, ++ .iterate = FileOpReaddir, + .open = FileOpOpen, + .release = FileOpRelease, + }; diff --git a/app-emulation/vmware-modules/files/271-3.11-01-filldir.patch b/app-emulation/vmware-modules/files/271-3.11-01-filldir.patch new file mode 100644 index 000000000000..2eec99b7c1f8 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.11-01-filldir.patch @@ -0,0 +1,53 @@ +simply remove the code for Filldir since it is no longer used with the new +iterate_dir API + +diff -rupN vmblock-only/linux/file.c vmblock-only.new/linux/file.c +--- vmblock-only/linux/file.c 2014-10-07 23:22:46.832469618 -0400 ++++ vmblock-only.new/linux/file.c 2014-10-07 23:24:35.276472720 -0400 +@@ -38,46 +38,6 @@ typedef u64 inode_num_t; + typedef ino_t inode_num_t; + #endif + +-/* Specifically for our filldir_t callback */ +-typedef struct FilldirInfo { +- filldir_t filldir; +- void *dirent; +-} FilldirInfo; +- +- +-/* +- *---------------------------------------------------------------------------- +- * +- * Filldir -- +- * +- * Callback function for readdir that we use in place of the one provided. +- * This allows us to specify that each dentry is a symlink, but pass through +- * everything else to the original filldir function. +- * +- * Results: +- * Original filldir's return value. +- * +- * Side effects: +- * Directory information gets copied to user's buffer. +- * +- *---------------------------------------------------------------------------- +- */ +- +-static int +-Filldir(void *buf, // IN: Dirent buffer passed from FileOpReaddir +- const char *name, // IN: Dirent name +- int namelen, // IN: len of dirent's name +- loff_t offset, // IN: Offset +- inode_num_t ino, // IN: Inode number of dirent +- unsigned int d_type) // IN: Type of file +-{ +- FilldirInfo *info = buf; +- +- /* Specify DT_LNK regardless */ +- return info->filldir(info->dirent, name, namelen, offset, ino, DT_LNK); +-} +- +- + /* File operations */ + + /* diff --git a/app-emulation/vmware-modules/files/271-3.13-00-vmnet.patch b/app-emulation/vmware-modules/files/271-3.13-00-vmnet.patch new file mode 100644 index 000000000000..1bf22077b727 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.13-00-vmnet.patch @@ -0,0 +1,39 @@ +the new API to get the hooknum +origionally from http://forums.gentoo.org/viewtopic-t-979802-start-25.html + +--- work/vmnet-only/filter.c 2013-08-27 20:29:04.000000000 +0100 ++++ patched/vmnet-only/filter.c 2014-01-26 01:09:05.184893854 +0000 +@@ -27,6 +27,7 @@ + #include "compat_module.h" + #include <linux/mutex.h> + #include <linux/netdevice.h> ++#include <linux/version.h> + #if COMPAT_LINUX_VERSION_CHECK_LT(3, 2, 0) + # include <linux/module.h> + #else +@@ -203,7 +204,11 @@ + #endif + + static unsigned int ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) + VNetFilterHookFn(unsigned int hooknum, // IN: ++#else ++VNetFilterHookFn(const struct nf_hook_ops *ops, // IN: ++#endif + #ifdef VMW_NFHOOK_USES_SKB + struct sk_buff *skb, // IN: + #else +@@ -252,7 +257,12 @@ + + /* When the host transmits, hooknum is VMW_NF_INET_POST_ROUTING. */ + /* When the host receives, hooknum is VMW_NF_INET_LOCAL_IN. */ +- transmit = (hooknum == VMW_NF_INET_POST_ROUTING); ++ ++ #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) ++ transmit = (hooknum == VMW_NF_INET_POST_ROUTING); ++ #else ++ transmit = (ops->hooknum == VMW_NF_INET_POST_ROUTING); ++ #endif + + packetHeader = compat_skb_network_header(skb); + ip = (struct iphdr*)packetHeader; diff --git a/app-emulation/vmware-modules/files/271-3.15-00-readlink.patch b/app-emulation/vmware-modules/files/271-3.15-00-readlink.patch new file mode 100644 index 000000000000..b8ee07822021 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.15-00-readlink.patch @@ -0,0 +1,15 @@ +replacing usage of vfs_readlink with new readlink_copy API +see: http://permalink.gmane.org/gmane.linux.kernel.commits.head/445090 + +diff -rupN vmblock-only/linux/inode.c vmblock-only/linux/inode.c +--- vmblock-only/linux/inode.c 2014-10-05 23:20:14.545218357 -0400 ++++ vmblock-only/linux/inode.c 2014-10-05 23:33:01.549259933 -0400 +@@ -178,7 +178,7 @@ InodeOpReadlink(struct dentry *dentry, + return -EINVAL; + } + +- return vfs_readlink(dentry, buffer, buflen, iinfo->name); ++ return readlink_copy(buffer, buflen, iinfo->name); + } + + diff --git a/app-emulation/vmware-modules/files/271-3.15-01-vsock.patch b/app-emulation/vmware-modules/files/271-3.15-01-vsock.patch new file mode 100644 index 000000000000..9e8d9d1a32f7 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.15-01-vsock.patch @@ -0,0 +1,46 @@ +removing the no longer existing second parameter to sk_data_ready +doesn't seem it ever served a purpose. + +diff -rupN vsock-only/linux/notify.c vsock-only.new/linux/notify.c +--- vsock-only/linux/notify.c 2013-11-05 23:33:27.000000000 -0500 ++++ vsock-only.new/linux/notify.c 2014-10-05 23:46:47.943304728 -0400 +@@ -515,8 +515,11 @@ VSockVmciHandleWrote(struct sock *sk, + vsk = vsock_sk(sk); + PKT_FIELD(vsk, sentWaitingRead) = FALSE; + #endif +- ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + +diff -rupN vsock-only/linux/notifyQState.c vsock-only.new/linux/notifyQState.c +--- vsock-only/linux/notifyQState.c 2013-11-05 23:33:27.000000000 -0500 ++++ vsock-only.new/linux/notifyQState.c 2014-10-05 23:46:33.231303931 -0400 +@@ -164,7 +164,11 @@ VSockVmciHandleWrote(struct sock *sk, + struct sockaddr_vm *dst, // IN: unused + struct sockaddr_vm *src) // IN: unused + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + +@@ -566,7 +570,11 @@ VSockVmciNotifyPktRecvPostDequeue(struct + } + + /* See the comment in VSockVmciNotifyPktSendPostEnqueue */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + return err; diff --git a/app-emulation/vmware-modules/files/271-3.17-00-netdev.patch b/app-emulation/vmware-modules/files/271-3.17-00-netdev.patch new file mode 100644 index 000000000000..e3ee3aa09939 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.17-00-netdev.patch @@ -0,0 +1,16 @@ +new alloc_netdev requires a new parameter. All examples in the kernel i've seen just +use the constant NET_NAME_UNKNOWN. +origionally from: https://communities.vmware.com/message/2425189 + +diff -rupN vmnet-only/netif.c vmnet-only.new/netif.c +--- vmnet-only/netif.c 2013-11-06 00:40:52.000000000 -0500 ++++ vmnet-only.new/netif.c 2014-10-09 17:29:12.361307961 -0400 +@@ -149,7 +149,7 @@ VNetNetIf_Create(char *devName, // IN: + memcpy(deviceName, devName, sizeof deviceName); + NULL_TERMINATE_STRING(deviceName); + +- dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup); ++ dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup); + if (!dev) { + retval = -ENOMEM; + goto out; diff --git a/app-emulation/vmware-modules/files/271-3.19-00-vmnet-warning.patch b/app-emulation/vmware-modules/files/271-3.19-00-vmnet-warning.patch new file mode 100644 index 000000000000..b4d30c97a59c --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-00-vmnet-warning.patch @@ -0,0 +1,13 @@ +diff -rupN vmnet-only/vm_device_version.h vmnet-only.new/vm_device_version.h +--- vmnet-only/vm_device_version.h 2013-11-06 00:40:52.000000000 -0500 ++++ vmnet-only.new/vm_device_version.h 2015-05-05 12:03:06.879202223 -0400 +@@ -53,7 +53,9 @@ + * VMware HD Audio codec + * VMware HD Audio controller + */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) + #define PCI_VENDOR_ID_VMWARE 0x15AD ++#endif + #define PCI_DEVICE_ID_VMWARE_SVGA2 0x0405 + #define PCI_DEVICE_ID_VMWARE_SVGA 0x0710 + #define PCI_DEVICE_ID_VMWARE_NET 0x0720 diff --git a/app-emulation/vmware-modules/files/271-3.19-01-vmblock-path.patch b/app-emulation/vmware-modules/files/271-3.19-01-vmblock-path.patch new file mode 100644 index 000000000000..178d1478ae59 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-01-vmblock-path.patch @@ -0,0 +1,67 @@ +Sources: +https://531682.bugs.gentoo.org/attachment.cgi?id=396484 +https://531682.bugs.gentoo.org/attachment.cgi?id=396482 +diff -rupN vmblock-only.orig/linux/dentry.c vmblock-only/linux/dentry.c +--- vmblock-only.orig/linux/dentry.c 2015-02-14 18:05:46.000000000 -0500 ++++ vmblock-only/linux/dentry.c 2015-02-14 18:09:59.000000000 -0500 +@@ -63,7 +63,7 @@ DentryOpRevalidate(struct dentry *dentry + unsigned int flags) // IN: lookup flags & intent + { + VMBlockInodeInfo *iinfo; +- struct nameidata actualNd; ++ struct path actualNd; + struct dentry *actualDentry; + int ret; + +diff -rupN vmblock-only.orig/linux/filesystem.c vmblock-only/linux/filesystem.c +--- vmblock-only.orig/linux/filesystem.c 2014-11-20 19:29:15.000000000 -0500 ++++ vmblock-only/linux/filesystem.c 2015-02-14 18:10:49.000000000 -0500 +@@ -322,7 +322,7 @@ Iget(struct super_block *sb, // IN: f + { + VMBlockInodeInfo *iinfo; + struct inode *inode; +- struct nameidata actualNd; ++ struct path actualNd; + + ASSERT(sb); + +diff -rupN vmblock-only.orig/shared/compat_namei.h vmblock-only/shared/compat_namei.h +--- vmblock-only.orig/shared/compat_namei.h 2014-11-20 19:29:15.000000000 -0500 ++++ vmblock-only/shared/compat_namei.h 2015-02-14 18:08:38.000000000 -0500 +@@ -26,21 +26,21 @@ + * struct. They were both replaced with a struct path. + */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +-#define compat_vmw_nd_to_dentry(nd) (nd).path.dentry ++#define compat_vmw_nd_to_dentry(nd) (nd).dentry + #else + #define compat_vmw_nd_to_dentry(nd) (nd).dentry + #endif + + /* In 2.6.25-rc2, path_release(&nd) was replaced with path_put(&nd.path). */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +-#define compat_path_release(nd) path_put(&(nd)->path) ++#define compat_path_release(nd) path_put(nd) + #else + #define compat_path_release(nd) path_release(nd) + #endif + + /* path_lookup was removed in 2.6.39 merge window VFS merge */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) +-#define compat_path_lookup(name, flags, nd) kern_path(name, flags, &((nd)->path)) ++#define compat_path_lookup(name, flags, nd) kern_path(name, flags, nd) + #else + #define compat_path_lookup(name, flags, nd) path_lookup(name, flags, nd) + #endif +diff -u vmblock-only.orig/linux/file.c vmblock-only/linux/file.c +--- vmblock-only.orig/linux/file.c 2015-02-11 12:18:29.000000000 -0500 ++++ vmblock-only/linux/file.c 2015-02-11 12:41:41.000000000 -0500 +@@ -92,7 +92,7 @@ + * and that would try to acquire the inode's semaphore; if the two inodes + * are the same we'll deadlock. + */ +- if (actualFile->f_dentry && inode == actualFile->f_dentry->d_inode) { ++ if (actualFile->f_path.dentry && inode == actualFile->f_path.dentry->d_inode) { + Warning("FileOpOpen: identical inode encountered, open cannot succeed.\n"); + if (filp_close(actualFile, current->files) < 0) { + Warning("FileOpOpen: unable to close opened file.\n"); diff --git a/app-emulation/vmware-modules/files/271-3.19-02-vmci.patch b/app-emulation/vmware-modules/files/271-3.19-02-vmci.patch new file mode 100644 index 000000000000..a8ec2b11daf9 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-02-vmci.patch @@ -0,0 +1,29 @@ +diff -rupN vmci-only/linux/vmciKernelIf.c vmci-only.new/linux/vmciKernelIf.c +--- vmci-only/linux/vmciKernelIf.c 2015-05-05 11:22:55.276071501 -0400 ++++ vmci-only.new/linux/vmciKernelIf.c 2015-05-05 11:23:58.912074950 -0400 +@@ -40,6 +40,7 @@ + #include <linux/socket.h> /* For memcpy_{to,from}iovec(). */ + #include <linux/vmalloc.h> + #include <linux/wait.h> ++#include <linux/skbuff.h> + + #include "compat_highmem.h" + #include "compat_interrupt.h" +diff -rupN vmci-only/linux/vmciKernelIf.c vmci-only.new/linux/vmciKernelIf.c +--- vmci-only/linux/vmciKernelIf.c 2013-11-05 23:33:26.000000000 -0500 ++++ vmci-only.new/linux/vmciKernelIf.c 2015-05-05 11:21:59.929068500 -0400 +@@ -1246,11 +1246,11 @@ __VMCIMemcpyFromQueue(void *dest, + } + + if (isIovec) { +- struct iovec *iov = (struct iovec *)dest; ++ struct msghdr *msg = dest; + int err; + + /* The iovec will track bytesCopied internally. */ +- err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy); ++ err = memcpy_to_msg(msg, (uint8 *)va + pageOffset, toCopy); + if (err != 0) { + kunmap(kernelIf->page[pageIndex]); + return VMCI_ERROR_INVALID_ARGS; + diff --git a/app-emulation/vmware-modules/files/271-3.19-03-vmnet.patch b/app-emulation/vmware-modules/files/271-3.19-03-vmnet.patch new file mode 100644 index 000000000000..041bfb6a6210 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-03-vmnet.patch @@ -0,0 +1,29 @@ +diff -ur vmnet-only.orig/driver.c vmnet-only/driver.c +--- vmnet-only.orig/driver.c 2014-06-13 02:38:25.000000000 +0200 ++++ vmnet-only/driver.c 2015-02-21 17:31:22.630656305 +0100 +@@ -1236,8 +1236,8 @@ + struct inode *inode = NULL; + long err; + +- if (filp && filp->f_dentry) { +- inode = filp->f_dentry->d_inode; ++ if (filp && filp->f_path.dentry) { ++ inode = filp->f_path.dentry->d_inode; + } + err = VNetFileOpIoctl(inode, filp, iocmd, ioarg); + return err; +diff -ur vmnet-only.orig/userif.c vmnet-only/userif.c +--- vmnet-only.orig/userif.c 2014-06-13 02:38:25.000000000 +0200 ++++ vmnet-only/userif.c 2015-02-21 17:37:46.154589854 +0100 +@@ -523,7 +523,10 @@ + .iov_base = buf, + .iov_len = len, + }; +- return skb_copy_datagram_iovec(skb, 0, &iov, len); ++ struct iov_iter to; ++ ++ iov_iter_init(&to, READ, &iov, 1, len); ++ return skb_copy_datagram_iter(skb, 0, &to, len); + } + + diff --git a/app-emulation/vmware-modules/files/271-3.19-04-vsock.patch b/app-emulation/vmware-modules/files/271-3.19-04-vsock.patch new file mode 100644 index 000000000000..8c9d3cb6dfe3 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-04-vsock.patch @@ -0,0 +1,12 @@ +diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c +--- vsock-only/linux/af_vsock.c 2015-05-05 11:26:05.145081792 -0400 ++++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:30:54.304097466 -0400 +@@ -4266,7 +4266,7 @@ VSockVmciDgramSendmsg(struct kiocb *kioc + goto out; + } + +- memcpy_fromiovec(VMCI_DG_PAYLOAD(dg), msg->msg_iov, len); ++ memcpy_from_msg(VMCI_DG_PAYLOAD(dg), msg, len); + + dg->dst = VMCI_MAKE_HANDLE(remoteAddr->svm_cid, remoteAddr->svm_port); + dg->src = VMCI_MAKE_HANDLE(vsk->localAddr.svm_cid, vsk->localAddr.svm_port); diff --git a/app-emulation/vmware-modules/files/271-3.19-05-vsock.patch b/app-emulation/vmware-modules/files/271-3.19-05-vsock.patch new file mode 100644 index 000000000000..2e412301d096 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-05-vsock.patch @@ -0,0 +1,15 @@ +diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c +--- vsock-only/linux/af_vsock.c 2015-05-05 11:31:35.710099711 -0400 ++++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:36:33.260115840 -0400 +@@ -4727,7 +4727,11 @@ VSockVmciDgramRecvmsg(struct kiocb *kioc + } + + /* Place the datagram payload in the user's iovec. */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) + err = skb_copy_datagram_iovec(skb, sizeof *dg, msg->msg_iov, payloadLen); ++#else ++ err = skb_copy_datagram_iter(skb, sizeof *dg, &msg->msg_iter, payloadLen); ++#endif + if (err) { + goto out; + } diff --git a/app-emulation/vmware-modules/files/271-3.19-06-vmci_qpair.patch b/app-emulation/vmware-modules/files/271-3.19-06-vmci_qpair.patch new file mode 100644 index 000000000000..1849a378456e --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-06-vmci_qpair.patch @@ -0,0 +1,24 @@ +diff -rupN vsock-only.old/linux/af_vsock.c vsock-only/linux/af_vsock.c +--- vsock-only.old/linux/af_vsock.c 2015-05-06 20:41:47.684046762 -0400 ++++ vsock-only/linux/af_vsock.c 2015-05-06 20:52:15.245080779 -0400 +@@ -4629,7 +4629,7 @@ VSockVmciStreamSendmsg(struct kiocb *kio + * able to send. + */ + +- written = vmci_qpair_enquev(vsk->qpair, msg->msg_iov, ++ written = vmci_qpair_enquev(vsk->qpair, &msg->msg_iter.iov, + len - totalWritten, 0); + if (written < 0) { + err = -ENOMEM; +@@ -4874,9 +4874,9 @@ VSockVmciStreamRecvmsg(struct kiocb *kio + } + + if (flags & MSG_PEEK) { +- read = vmci_qpair_peekv(vsk->qpair, msg->msg_iov, len - copied, 0); ++ read = vmci_qpair_peekv(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); + } else { +- read = vmci_qpair_dequev(vsk->qpair, msg->msg_iov, len - copied, 0); ++ read = vmci_qpair_dequev(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); + } + + if (read < 0) { diff --git a/app-emulation/vmware-modules/files/271-apic.patch b/app-emulation/vmware-modules/files/271-apic.patch new file mode 100644 index 000000000000..66cd45933246 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-apic.patch @@ -0,0 +1,12 @@ +diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c +index f1f4b10..c43242f 100644 +--- a/vmmon-only/linux/hostif.c ++++ b/vmmon-only/linux/hostif.c +@@ -55,6 +55,7 @@ + #include <linux/kthread.h> + #include <linux/wait.h> + ++#include <asm/apic.h> + + #include "vmware.h" + #include "x86apic.h" diff --git a/app-emulation/vmware-modules/files/271-filldir.patch b/app-emulation/vmware-modules/files/271-filldir.patch new file mode 100644 index 000000000000..6eb1f315cd97 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-filldir.patch @@ -0,0 +1,91 @@ +diff --git a/vmblock-only/linux/file.c b/vmblock-only/linux/file.c +index d7ac1f6..5499169 100644 +--- a/vmblock-only/linux/file.c ++++ b/vmblock-only/linux/file.c +@@ -38,46 +38,6 @@ typedef u64 inode_num_t; + typedef ino_t inode_num_t; + #endif + +-/* Specifically for our filldir_t callback */ +-typedef struct FilldirInfo { +- filldir_t filldir; +- void *dirent; +-} FilldirInfo; +- +- +-/* +- *---------------------------------------------------------------------------- +- * +- * Filldir -- +- * +- * Callback function for readdir that we use in place of the one provided. +- * This allows us to specify that each dentry is a symlink, but pass through +- * everything else to the original filldir function. +- * +- * Results: +- * Original filldir's return value. +- * +- * Side effects: +- * Directory information gets copied to user's buffer. +- * +- *---------------------------------------------------------------------------- +- */ +- +-static int +-Filldir(void *buf, // IN: Dirent buffer passed from FileOpReaddir +- const char *name, // IN: Dirent name +- int namelen, // IN: len of dirent's name +- loff_t offset, // IN: Offset +- inode_num_t ino, // IN: Inode number of dirent +- unsigned int d_type) // IN: Type of file +-{ +- FilldirInfo *info = buf; +- +- /* Specify DT_LNK regardless */ +- return info->filldir(info->dirent, name, namelen, offset, ino, DT_LNK); +-} +- +- + /* File operations */ + + /* +@@ -166,11 +126,10 @@ FileOpOpen(struct inode *inode, // IN + + static int + FileOpReaddir(struct file *file, // IN +- void *dirent, // IN +- filldir_t filldir) // IN ++ struct dir_context *ctx) // IN + { + int ret; +- FilldirInfo info; ++ + struct file *actualFile; + + if (!file) { +@@ -184,12 +143,10 @@ FileOpReaddir(struct file *file, // IN + return -EINVAL; + } + +- info.filldir = filldir; +- info.dirent = dirent; +- +- actualFile->f_pos = file->f_pos; +- ret = vfs_readdir(actualFile, Filldir, &info); +- file->f_pos = actualFile->f_pos; ++ /* Ricky Wong Yung Fei: ++ * Manipulation of pos is now handled internally by iterate_dir(). ++ */ ++ ret = iterate_dir(actualFile, ctx); + + return ret; + } +@@ -237,7 +194,7 @@ FileOpRelease(struct inode *inode, // IN + + + struct file_operations RootFileOps = { +- .readdir = FileOpReaddir, ++ .iterate = FileOpReaddir, + .open = FileOpOpen, + .release = FileOpRelease, + }; diff --git a/app-emulation/vmware-modules/files/271-hardened.patch b/app-emulation/vmware-modules/files/271-hardened.patch new file mode 100644 index 000000000000..ea1b0f300751 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-hardened.patch @@ -0,0 +1,170 @@ +diff --git a/vmci-only/linux/driver.c b/vmci-only/linux/driver.c +index 921f25c..41a39e3 100644 +--- a/vmci-only/linux/driver.c ++++ b/vmci-only/linux/driver.c +@@ -241,7 +241,24 @@ static unsigned int LinuxDriverPoll(struct file *file, poll_table *wait); + #define LinuxDriverUnlockIoctlPerFD(mutex) do {} while (0) + #endif + +-static struct file_operations vmuser_fops; ++/* ++ * Moved file operations initialize here because of incompatibilites ++ * with Gentoo hardened profile/hardend Linux 3. ++ */ ++static struct file_operations vmuser_fops = { ++ .owner = THIS_MODULE, ++ .poll = LinuxDriverPoll, ++#ifdef HAVE_UNLOCKED_IOCTL ++ .unlocked_ioctl = LinuxDriver_UnlockedIoctl, ++#else ++ .ioctl = LinuxDriver_Ioctl, ++#endif ++#ifdef HAVE_COMPAT_IOCTL ++ .compat_ioctl = LinuxDriver_UnlockedIoctl, ++#endif ++ .open = LinuxDriver_Open, ++ .release = LinuxDriver_Close ++}; + + + /* +@@ -378,26 +395,6 @@ vmci_host_init(void) + return -ENOMEM; + } + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vmuser_fops, 0, sizeof vmuser_fops); +- vmuser_fops.owner = THIS_MODULE; +- vmuser_fops.poll = LinuxDriverPoll; +-#ifdef HAVE_UNLOCKED_IOCTL +- vmuser_fops.unlocked_ioctl = LinuxDriver_UnlockedIoctl; +-#else +- vmuser_fops.ioctl = LinuxDriver_Ioctl; +-#endif +-#ifdef HAVE_COMPAT_IOCTL +- vmuser_fops.compat_ioctl = LinuxDriver_UnlockedIoctl; +-#endif +- vmuser_fops.open = LinuxDriver_Open; +- vmuser_fops.release = LinuxDriver_Close; +- + sprintf(linuxState.deviceName, "vmci"); + linuxState.major = 10; + linuxState.misc.minor = MISC_DYNAMIC_MINOR; +diff --git a/vmmon-only/linux/driver.c b/vmmon-only/linux/driver.c +index b21dd44..960c2aa 100644 +--- a/vmmon-only/linux/driver.c ++++ b/vmmon-only/linux/driver.c +@@ -178,7 +178,22 @@ static struct vm_operations_struct vmuser_mops = { + #endif + }; + +-static struct file_operations vmuser_fops; ++static struct file_operations vmuser_fops = { ++ .owner = THIS_MODULE, ++ .poll = LinuxDriverPoll, ++#ifdef HAVE_UNLOCKED_IOCTL ++ .unlocked_ioctl = LinuxDriver_UnlockedIoctl, ++#else ++ .ioctl = LinuxDriver_Ioctl, ++#endif ++#ifdef HAVE_COMPAT_IOCTL ++ .compat_ioctl = LinuxDriver_UnlockedIoctl, ++#endif ++ .open = LinuxDriver_Open, ++ .release = LinuxDriver_Close, ++ .mmap = LinuxDriverMmap ++}; ++ + static struct timer_list tscTimer; + + /* +@@ -357,27 +372,6 @@ init_module(void) + spin_lock_init(&linuxState.pollListLock); + #endif + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vmuser_fops, 0, sizeof vmuser_fops); +- vmuser_fops.owner = THIS_MODULE; +- vmuser_fops.poll = LinuxDriverPoll; +-#ifdef HAVE_UNLOCKED_IOCTL +- vmuser_fops.unlocked_ioctl = LinuxDriver_UnlockedIoctl; +-#else +- vmuser_fops.ioctl = LinuxDriver_Ioctl; +-#endif +-#ifdef HAVE_COMPAT_IOCTL +- vmuser_fops.compat_ioctl = LinuxDriver_UnlockedIoctl; +-#endif +- vmuser_fops.open = LinuxDriver_Open; +- vmuser_fops.release = LinuxDriver_Close; +- vmuser_fops.mmap = LinuxDriverMmap; +- + #ifdef VMX86_DEVEL + devel_init_module(); + linuxState.minor = 0; +diff --git a/vmnet-only/driver.c b/vmnet-only/driver.c +index b12b982..40bd4cf 100644 +--- a/vmnet-only/driver.c ++++ b/vmnet-only/driver.c +@@ -165,7 +165,22 @@ static long VNetFileOpUnlockedIoctl(struct file * filp, + unsigned int iocmd, unsigned long ioarg); + #endif + +-static struct file_operations vnetFileOps; ++static struct file_operations vnetFileOps = { ++ .owner = THIS_MODULE, ++ .read = VNetFileOpRead, ++ .write = VNetFileOpWrite, ++ .poll = VNetFileOpPoll, ++#ifdef HAVE_UNLOCKED_IOCTL ++ .unlocked_ioctl = VNetFileOpUnlockedIoctl, ++#else ++ .ioctl = VNetFileOpIoctl, ++#endif ++#ifdef HAVE_COMPAT_IOCTL ++ .compat_ioctl = VNetFileOpUnlockedIoctl, ++#endif ++ .open = VNetFileOpOpen, ++ .release = VNetFileOpClose ++}; + + /* + * Utility functions +@@ -476,28 +491,6 @@ init_module(void) + goto err_proto; + } + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vnetFileOps, 0, sizeof vnetFileOps); +- vnetFileOps.owner = THIS_MODULE; +- vnetFileOps.read = VNetFileOpRead; +- vnetFileOps.write = VNetFileOpWrite; +- vnetFileOps.poll = VNetFileOpPoll; +-#ifdef HAVE_UNLOCKED_IOCTL +- vnetFileOps.unlocked_ioctl = VNetFileOpUnlockedIoctl; +-#else +- vnetFileOps.ioctl = VNetFileOpIoctl; +-#endif +-#ifdef HAVE_COMPAT_IOCTL +- vnetFileOps.compat_ioctl = VNetFileOpUnlockedIoctl; +-#endif +- vnetFileOps.open = VNetFileOpOpen; +- vnetFileOps.release = VNetFileOpClose; +- + retval = register_chrdev(VNET_MAJOR_NUMBER, "vmnet", &vnetFileOps); + if (retval) { + LOG(0, (KERN_NOTICE "/dev/vmnet: could not register major device %d\n", diff --git a/app-emulation/vmware-modules/files/271-makefile-include.patch b/app-emulation/vmware-modules/files/271-makefile-include.patch new file mode 100644 index 000000000000..39c300030805 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-makefile-include.patch @@ -0,0 +1,65 @@ +diff --git a/vmblock-only/Makefile.kernel b/vmblock-only/Makefile.kernel +index ab7a727..e3ec9d2 100644 +--- a/vmblock-only/Makefile.kernel ++++ b/vmblock-only/Makefile.kernel +@@ -19,7 +19,7 @@ + + INCLUDE += -I$(SRCROOT)/include + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachecreate.c, -DVMW_KMEMCR_HAS_DTOR, ) + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachector.c, -DVMW_KMEMCR_CTOR_HAS_3_ARGS, ) +diff --git a/vmci-only/Makefile.kernel b/vmci-only/Makefile.kernel +index ba343ee..861ea83 100644 +--- a/vmci-only/Makefile.kernel ++++ b/vmci-only/Makefile.kernel +@@ -21,7 +21,7 @@ CC_OPTS += -DVMCI + + INCLUDE += -I$(SRCROOT)/shared -I$(SRCROOT)/common -I$(SRCROOT)/linux + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + obj-m += $(DRIVER).o + +diff --git a/vmmon-only/Makefile.kernel b/vmmon-only/Makefile.kernel +index 8770d1d..c4746c3 100644 +--- a/vmmon-only/Makefile.kernel ++++ b/vmmon-only/Makefile.kernel +@@ -22,7 +22,7 @@ CC_OPTS += -DVMMON -DVMCORE + INCLUDE := -I$(SRCROOT)/include -I$(SRCROOT)/common -I$(SRCROOT)/linux \ + -I$(SRCROOT)/vmcore + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/smpcall.c, -DVMW_HAVE_SMP_CALL_3ARG, ) + +diff --git a/vmnet-only/Makefile.kernel b/vmnet-only/Makefile.kernel +index d1e3133..665d428 100644 +--- a/vmnet-only/Makefile.kernel ++++ b/vmnet-only/Makefile.kernel +@@ -19,7 +19,7 @@ + + INCLUDE := -I$(SRCROOT) + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_net.c,-DVMW_NETDEV_HAS_NET, ) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_dev_net.c,-DVMW_NETDEV_HAS_DEV_NET, ) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/nfhook_uses_skb.c,-DVMW_NFHOOK_USES_SKB, ) +diff --git a/vsock-only/Makefile.kernel b/vsock-only/Makefile.kernel +index b4629ee..264b8cb 100644 +--- a/vsock-only/Makefile.kernel ++++ b/vsock-only/Makefile.kernel +@@ -25,7 +25,7 @@ INCLUDE += -I$(SRCROOT)/include + INCLUDE += -I$(SRCROOT)/linux + INCLUDE += -I$(SRCROOT)/common + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/netcreate_num_params.c, -DVMW_NETCREATE_KERNARG, ) + + diff --git a/app-emulation/vmware-modules/files/271-makefile-kernel-dir.patch b/app-emulation/vmware-modules/files/271-makefile-kernel-dir.patch new file mode 100644 index 000000000000..1a647a3302d8 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-makefile-kernel-dir.patch @@ -0,0 +1,85 @@ +diff --git a/vmblock-only/Makefile b/vmblock-only/Makefile +index 2b81323..746c8b8 100644 +--- a/vmblock-only/Makefile ++++ b/vmblock-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmblock + PRODUCT := ws +diff --git a/vmci-only/Makefile b/vmci-only/Makefile +index 8e9c5be..6ec828b 100644 +--- a/vmci-only/Makefile ++++ b/vmci-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmci + PRODUCT := ws +diff --git a/vmmon-only/Makefile b/vmmon-only/Makefile +index 5bd867b..91a83d4 100644 +--- a/vmmon-only/Makefile ++++ b/vmmon-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmmon + PRODUCT := @@PRODUCT@@ +diff --git a/vmnet-only/Makefile b/vmnet-only/Makefile +index d4eb73c..c7c6d38 100644 +--- a/vmnet-only/Makefile ++++ b/vmnet-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmnet + PRODUCT := @@PRODUCT@@ +diff --git a/vsock-only/Makefile b/vsock-only/Makefile +index 93dd61d..9765696 100644 +--- a/vsock-only/Makefile ++++ b/vsock-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vsock + PRODUCT := ws diff --git a/app-emulation/vmware-modules/files/271-netdevice.patch b/app-emulation/vmware-modules/files/271-netdevice.patch new file mode 100644 index 000000000000..35231a3205e3 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-netdevice.patch @@ -0,0 +1,24 @@ +diff --git a/vmnet-only/compat_netdevice.h b/vmnet-only/compat_netdevice.h +index 7a56304..9ff4548 100644 +--- a/vmnet-only/compat_netdevice.h ++++ b/vmnet-only/compat_netdevice.h +@@ -47,6 +47,19 @@ + # define net_device device + #endif + ++/* it looks like these have been removed from the kernel 3.1 ++ * probably because the "transition" is considered complete. ++ * so to keep this source compatible we just redefine them like they were ++ * previously ++ */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0) ++#define HAVE_ALLOC_NETDEV /* feature macro: alloc_xxxdev ++ functions are available. */ ++#define HAVE_FREE_NETDEV /* free_netdev() */ ++#define HAVE_NETDEV_PRIV /* netdev_priv() */ ++#define HAVE_NETIF_QUEUE ++#define HAVE_NET_DEVICE_OPS ++#endif + + /* + * SET_MODULE_OWNER appeared sometime during 2.3.x. It was setting diff --git a/app-emulation/vmware-modules/files/271-putname.patch b/app-emulation/vmware-modules/files/271-putname.patch new file mode 100644 index 000000000000..6e76130fa165 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-putname.patch @@ -0,0 +1,13 @@ +diff --git a/vmblock-only/linux/control.c b/vmblock-only/linux/control.c +index 79716bd..2dd83fe 100644 +--- a/vmblock-only/linux/control.c ++++ b/vmblock-only/linux/control.c +@@ -293,7 +293,7 @@ ExecuteBlockOp(const char __user *buf, // IN: buffer with name + + retval = i < 0 ? -EINVAL : blockOp(name, blocker); + +- putname(name); ++ __putname(name); + + return retval; + } diff --git a/app-emulation/vmware-modules/files/271-vfsfollowlink.patch b/app-emulation/vmware-modules/files/271-vfsfollowlink.patch new file mode 100644 index 000000000000..13f600e39f33 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-vfsfollowlink.patch @@ -0,0 +1,30 @@ +diff -Naur a/linux/inode.c b/linux/inode.c +--- a/vmblock-only/linux/inode.c 2013-10-03 04:29:47.471339204 -0400 ++++ b/vmblock-only/linux/inode.c 2013-10-03 04:31:56.607334636 -0400 +@@ -36,7 +36,7 @@ + + /* Inode operations */ + static struct dentry *InodeOpLookup(struct inode *dir, +- struct dentry *dentry, struct nameidata *nd); ++ struct dentry *dentry, unsigned int flags); + static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); +@@ -75,7 +75,7 @@ + static struct dentry * + InodeOpLookup(struct inode *dir, // IN: parent directory's inode + struct dentry *dentry, // IN: dentry to lookup +- struct nameidata *nd) // IN: lookup intent and information ++ unsigned int flags) // IN: lookup intent and information + { + char *filename; + struct inode *inode; +@@ -221,7 +221,7 @@ + goto out; + } + +- ret = vfs_follow_link(nd, iinfo->name); ++ nd_set_link(nd, iinfo->name); + + out: + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) diff --git a/app-emulation/vmware-modules/files/271-vmmon.patch b/app-emulation/vmware-modules/files/271-vmmon.patch new file mode 100644 index 000000000000..f1979641a4d6 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-vmmon.patch @@ -0,0 +1,44 @@ +diff -ru source900/vmmon-only/linux/hostif.c source/vmmon-only/linux/hostif.c
+--- source900/vmmon-only/linux/hostif.c 2012-07-23 18:18:55.000000000 +0900
++++ source/vmmon-only/linux/hostif.c 2012-08-03 16:20:23.200420885 +0900
+@@ -48,6 +48,7 @@
+ #include <linux/smp_lock.h>
+ #endif
+
++#include <asm/asm.h>
+ #include <asm/io.h>
+ #include <asm/uaccess.h>
+ #include <linux/mc146818rtc.h>
+@@ -3586,31 +3587,14 @@
+ {
+ int ret;
+ unsigned low, high;
+-#if defined(VM_X86_64)
+ asm volatile("2: rdmsr ; xor %0,%0\n"
+ "1:\n\t"
+ ".section .fixup,\"ax\"\n\t"
+ "3: mov %4,%0 ; jmp 1b\n\t"
+ ".previous\n\t"
+- ".section __ex_table,\"a\"\n\t"
+- ".balign 8\n"
+- ".quad 2b,3b\n"
+- ".previous\n"
++ _ASM_EXTABLE(2b,3b)
+ : "=r"(ret), "=a"(low), "=d"(high)
+ : "c"(msr), "i"(-EFAULT), "1"(0), "2"(0)); // init eax/edx to 0
+-#else
+- asm volatile("2: rdmsr ; xor %0,%0\n"
+- "1:\n\t"
+- ".section .fixup,\"ax\"\n\t"
+- "3: mov %4,%0 ; jmp 1b\n\t"
+- ".previous\n\t"
+- ".section __ex_table,\"a\"\n"
+- ".balign 4\n"
+- ".long 2b,3b\n"
+- ".previous\n"
+- : "=r"(ret), "=a"(low), "=d"(high)
+- : "c"(msr), "i"(-EFAULT), "1"(0), "2"(0)); // init eax/edx to 0
+-#endif // VM_X86_64
+ *val = (low | ((u64)(high) << 32));
+
+ return ret;
diff --git a/app-emulation/vmware-modules/files/279-3.10-00-userns.patch b/app-emulation/vmware-modules/files/279-3.10-00-userns.patch new file mode 100644 index 000000000000..b1b78b76300e --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.10-00-userns.patch @@ -0,0 +1,41 @@ +correctly initializes UID/GID values +gets UID correctly in light of user namespace API +origionally from https://462666.bugs.gentoo.org/attachment.cgi?id=342888 + +--- a/vmblock-only/linux/inode.c 2013-03-20 17:37:48.000000000 +0100 ++++ b/vmblock-only/linux/inode.c 2013-03-20 17:41:22.000000000 +0100 +@@ -135,7 +135,8 @@ + inode->i_size = INODE_TO_IINFO(inode)->nameLen; + inode->i_version = 1; + inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; +- inode->i_uid = inode->i_gid = 0; ++ inode->i_uid = GLOBAL_ROOT_UID; ++ inode->i_gid = GLOBAL_ROOT_GID; + inode->i_op = &LinkInodeOps; + + d_add(dentry, inode); + +--- a/vmci-only/linux/driver.c 2013-03-20 17:57:35.000000000 +0100 ++++ b/vmci-only/linux/driver.c 2013-03-20 17:57:43.000000000 +0100 +@@ -740,7 +740,7 @@ + goto init_release; + } + +- user = current_uid(); ++ user = from_kuid(current_user_ns(), current_uid()); + retval = VMCIContext_InitContext(initBlock.cid, initBlock.flags, + 0 /* Unused */, vmciLinux->userVersion, + &user, &vmciLinux->context); + +--- a/vsock-only/linux/af_vsock.c 2013-03-20 18:01:48.000000000 +0100 ++++ b/vsock-only/linux/af_vsock.c 2013-03-20 18:01:58.000000000 +0100 +@@ -2866,7 +2866,7 @@ + vsk->connectTimeout = psk->connectTimeout; + } else { + vsk->trusted = capable(CAP_NET_ADMIN); +- vsk->owner = current_uid(); ++ vsk->owner = from_kuid(current_user_ns(), current_uid()); + vsk->queuePairSize = VSOCK_DEFAULT_QP_SIZE; + vsk->queuePairMinSize = VSOCK_DEFAULT_QP_SIZE_MIN; + vsk->queuePairMaxSize = VSOCK_DEFAULT_QP_SIZE_MAX; + diff --git a/app-emulation/vmware-modules/files/279-3.10-01-getname.patch b/app-emulation/vmware-modules/files/279-3.10-01-getname.patch new file mode 100644 index 000000000000..05ed8dbcc374 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.10-01-getname.patch @@ -0,0 +1,24 @@ +uses __getname/__putname instead of getname. getname was deprecated +the new code calls __getname (which really is a specific type of +memory allocator, then copies the string safely from user space +into the allocated buffer + +--- vmblock-only/linux/control.c 2014-03-15 15:28:40.871076076 +0100 ++++ vmblock-only/linux/control.c.new 2014-03-15 15:29:15.079074439 +0100 +@@ -279,11 +279,17 @@ + int i; + int retval; + +- name = getname(buf); ++ name = __getname(); + if (IS_ERR(name)) { + return PTR_ERR(name); + } + ++ i = strncpy_from_user(name, buf, PATH_MAX); ++ if (i < 0 || i == PATH_MAX) { ++ __putname(name); ++ return -EINVAL; ++ } ++ + for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) { diff --git a/app-emulation/vmware-modules/files/279-3.10-03-deprecated.patch b/app-emulation/vmware-modules/files/279-3.10-03-deprecated.patch new file mode 100644 index 000000000000..98b28aabcdeb --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.10-03-deprecated.patch @@ -0,0 +1,89 @@ +undefines DEPRECATED which is unfortunately also defined (as a string) +in <linux/printk.h>. Realistically, this macro isn't even used, so this +doesn't matter much. But it hushes some very loud warnings. + +diff -rupN vmblock-only/shared/vm_assert.h vmblock-only.new/shared/vm_assert.h +--- vmblock-only/shared/vm_assert.h 2014-04-14 17:41:41.000000000 -0400 ++++ vmblock-only.new/shared/vm_assert.h 2014-10-11 17:37:23.010352172 -0400 +@@ -251,11 +251,13 @@ void WarningThrottled(uint32 *count, con + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL ++ #undef DEPRECATED + #define DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED. %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else ++ #undef DEPRECATED + #define DEPRECATED(_fix) do {} while (0) + #endif + +diff -rupN vmci-only/shared/vm_assert.h vmci-only.new/shared/vm_assert.h +--- vmci-only/shared/vm_assert.h 2014-04-14 17:41:41.000000000 -0400 ++++ vmci-only.new/shared/vm_assert.h 2014-10-11 17:37:08.936352130 -0400 +@@ -251,11 +251,13 @@ void WarningThrottled(uint32 *count, con + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL ++ #undef DEPRECATED + #define DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED. %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else ++ #undef DEPRECATED + #define DEPRECATED(_fix) do {} while (0) + #endif + +diff -rupN vmmon-only/include/vm_assert.h vmmon-only.new/include/vm_assert.h +--- vmmon-only/include/vm_assert.h 2014-04-14 20:06:20.000000000 -0400 ++++ vmmon-only.new/include/vm_assert.h 2014-10-11 17:36:45.289352058 -0400 +@@ -251,11 +251,13 @@ void WarningThrottled(uint32 *count, con + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL ++ #undef DEPRECATED + #define DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED. %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else ++ #undef DEPRECATED + #define DEPRECATED(_fix) do {} while (0) + #endif + +diff -rupN vmnet-only/vm_assert.h vmnet-only.new/vm_assert.h +--- vmnet-only/vm_assert.h 2014-04-14 20:06:21.000000000 -0400 ++++ vmnet-only.new/vm_assert.h 2014-10-11 17:37:14.364352146 -0400 +@@ -251,11 +251,13 @@ void WarningThrottled(uint32 *count, con + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL ++ #undef DEPRECATED + #define DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED. %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else ++ #undef DEPRECATED + #define DEPRECATED(_fix) do {} while (0) + #endif + +diff -rupN vsock-only/shared/vm_assert.h vsock-only.new/shared/vm_assert.h +--- vsock-only/shared/vm_assert.h 2014-04-14 17:41:41.000000000 -0400 ++++ vsock-only.new/shared/vm_assert.h 2014-10-11 17:37:02.778352111 -0400 +@@ -251,11 +251,13 @@ void WarningThrottled(uint32 *count, con + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL ++ #undef DEPRECATED + #define DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED. %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else ++ #undef DEPRECATED + #define DEPRECATED(_fix) do {} while (0) + #endif + diff --git a/app-emulation/vmware-modules/files/279-3.10-04-dentry.patch b/app-emulation/vmware-modules/files/279-3.10-04-dentry.patch new file mode 100644 index 000000000000..f4f59d977408 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.10-04-dentry.patch @@ -0,0 +1,34 @@ +starting with kernel 3.6, d_revalidate takes an unsigned int "flags" +as the second argument, not a nameidata pointer! see fs/namei.c +for implementation + +diff -Naur vmblock-only/linux/dentry.c vmblock-only/linux/dentry.c +--- vmblock-only/linux/dentry.c 2013-11-05 23:33:26.000000000 -0500 ++++ vmblock-only/linux/dentry.c 2014-04-26 10:58:03.062635343 -0400 +@@ -32,7 +32,7 @@ + #include "block.h" + + +-static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd); ++static int DentryOpRevalidate(struct dentry *dentry, unsigned int flags); + + struct dentry_operations LinkDentryOps = { + .d_revalidate = DentryOpRevalidate, +@@ -60,7 +60,7 @@ + + static int + DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating +- struct nameidata *nd) // IN: lookup flags & intent ++ unsigned int flags) // IN: lookup flags & intent + { + VMBlockInodeInfo *iinfo; + struct nameidata actualNd; +@@ -101,7 +101,7 @@ + if (actualDentry && + actualDentry->d_op && + actualDentry->d_op->d_revalidate) { +- return actualDentry->d_op->d_revalidate(actualDentry, nd); ++ return actualDentry->d_op->d_revalidate(actualDentry, flags); + } + + if (compat_path_lookup(iinfo->name, 0, &actualNd)) { diff --git a/app-emulation/vmware-modules/files/279-3.10-05-inode.patch b/app-emulation/vmware-modules/files/279-3.10-05-inode.patch new file mode 100644 index 000000000000..01c88930899c --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.10-05-inode.patch @@ -0,0 +1,36 @@ +starting with kernel 3.6, d_revalidate takes an unsigned int "flags" +as the second argument, not a nameidata pointer! see fs/namei.c +for implementation. Also changing vfs_follow_link to nd_set_link. +See: https://lkml.org/lkml/2013/9/9/236 + +diff -Naur vmblock-only/linux/inode.c vmblock-only/linux/inode.c +--- vmblock-only/linux/inode.c 2013-11-05 23:33:26.000000000 -0500 ++++ vmblock-only/linux/inode.c 2014-04-26 10:58:03.063635343 -0400 +@@ -36,7 +36,7 @@ + + /* Inode operations */ + static struct dentry *InodeOpLookup(struct inode *dir, +- struct dentry *dentry, struct nameidata *nd); ++ struct dentry *dentry, unsigned int flags); + static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); +@@ -75,7 +75,7 @@ + static struct dentry * + InodeOpLookup(struct inode *dir, // IN: parent directory's inode + struct dentry *dentry, // IN: dentry to lookup +- struct nameidata *nd) // IN: lookup intent and information ++ unsigned int flags) // IN: lookup intent and information + { + char *filename; + struct inode *inode; +@@ -221,7 +221,8 @@ + goto out; + } + +- ret = vfs_follow_link(nd, iinfo->name); ++ nd_set_link(nd, iinfo->name); ++ ret = 0; + + out: + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) diff --git a/app-emulation/vmware-modules/files/279-3.15-00-readlink.patch b/app-emulation/vmware-modules/files/279-3.15-00-readlink.patch new file mode 100644 index 000000000000..b8ee07822021 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.15-00-readlink.patch @@ -0,0 +1,15 @@ +replacing usage of vfs_readlink with new readlink_copy API +see: http://permalink.gmane.org/gmane.linux.kernel.commits.head/445090 + +diff -rupN vmblock-only/linux/inode.c vmblock-only/linux/inode.c +--- vmblock-only/linux/inode.c 2014-10-05 23:20:14.545218357 -0400 ++++ vmblock-only/linux/inode.c 2014-10-05 23:33:01.549259933 -0400 +@@ -178,7 +178,7 @@ InodeOpReadlink(struct dentry *dentry, + return -EINVAL; + } + +- return vfs_readlink(dentry, buffer, buflen, iinfo->name); ++ return readlink_copy(buffer, buflen, iinfo->name); + } + + diff --git a/app-emulation/vmware-modules/files/279-3.15-01-vsock.patch b/app-emulation/vmware-modules/files/279-3.15-01-vsock.patch new file mode 100644 index 000000000000..9e8d9d1a32f7 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.15-01-vsock.patch @@ -0,0 +1,46 @@ +removing the no longer existing second parameter to sk_data_ready +doesn't seem it ever served a purpose. + +diff -rupN vsock-only/linux/notify.c vsock-only.new/linux/notify.c +--- vsock-only/linux/notify.c 2013-11-05 23:33:27.000000000 -0500 ++++ vsock-only.new/linux/notify.c 2014-10-05 23:46:47.943304728 -0400 +@@ -515,8 +515,11 @@ VSockVmciHandleWrote(struct sock *sk, + vsk = vsock_sk(sk); + PKT_FIELD(vsk, sentWaitingRead) = FALSE; + #endif +- ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + +diff -rupN vsock-only/linux/notifyQState.c vsock-only.new/linux/notifyQState.c +--- vsock-only/linux/notifyQState.c 2013-11-05 23:33:27.000000000 -0500 ++++ vsock-only.new/linux/notifyQState.c 2014-10-05 23:46:33.231303931 -0400 +@@ -164,7 +164,11 @@ VSockVmciHandleWrote(struct sock *sk, + struct sockaddr_vm *dst, // IN: unused + struct sockaddr_vm *src) // IN: unused + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + +@@ -566,7 +570,11 @@ VSockVmciNotifyPktRecvPostDequeue(struct + } + + /* See the comment in VSockVmciNotifyPktSendPostEnqueue */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + return err; diff --git a/app-emulation/vmware-modules/files/279-3.17-00-netdev.patch b/app-emulation/vmware-modules/files/279-3.17-00-netdev.patch new file mode 100644 index 000000000000..e3ee3aa09939 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.17-00-netdev.patch @@ -0,0 +1,16 @@ +new alloc_netdev requires a new parameter. All examples in the kernel i've seen just +use the constant NET_NAME_UNKNOWN. +origionally from: https://communities.vmware.com/message/2425189 + +diff -rupN vmnet-only/netif.c vmnet-only.new/netif.c +--- vmnet-only/netif.c 2013-11-06 00:40:52.000000000 -0500 ++++ vmnet-only.new/netif.c 2014-10-09 17:29:12.361307961 -0400 +@@ -149,7 +149,7 @@ VNetNetIf_Create(char *devName, // IN: + memcpy(deviceName, devName, sizeof deviceName); + NULL_TERMINATE_STRING(deviceName); + +- dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup); ++ dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup); + if (!dev) { + retval = -ENOMEM; + goto out; diff --git a/app-emulation/vmware-modules/files/279-3.18-00-version-redefined.patch b/app-emulation/vmware-modules/files/279-3.18-00-version-redefined.patch new file mode 100644 index 000000000000..2d3882430580 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.18-00-version-redefined.patch @@ -0,0 +1,24 @@ +--- a/vmci-only/shared/vm_device_version.h 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmci-only/shared/vm_device_version.h 2015-02-24 03:58:06.041605450 +0300 +@@ -53,7 +53,9 @@ + * VMware HD Audio codec + * VMware HD Audio controller + */ ++#ifndef PCI_VENDOR_ID_VMWARE + #define PCI_VENDOR_ID_VMWARE 0x15AD ++#endif + #define PCI_DEVICE_ID_VMWARE_SVGA2 0x0405 + #define PCI_DEVICE_ID_VMWARE_SVGA 0x0710 + #define PCI_DEVICE_ID_VMWARE_VGA 0x0711 +--- a/vmnet-only/vm_device_version.h 2015-02-07 03:54:16.000000000 +0300 ++++ c/vmnet-only/vm_device_version.h 2015-02-24 03:58:06.044604981 +0300 +@@ -53,7 +53,9 @@ + * VMware HD Audio codec + * VMware HD Audio controller + */ ++#ifndef PCI_VENDOR_ID_VMWARE + #define PCI_VENDOR_ID_VMWARE 0x15AD ++#endif + #define PCI_DEVICE_ID_VMWARE_SVGA2 0x0405 + #define PCI_DEVICE_ID_VMWARE_SVGA 0x0710 + #define PCI_DEVICE_ID_VMWARE_VGA 0x0711 diff --git a/app-emulation/vmware-modules/files/279-3.19-00-compat-namei.patch b/app-emulation/vmware-modules/files/279-3.19-00-compat-namei.patch new file mode 100644 index 000000000000..ec73500e979c --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-00-compat-namei.patch @@ -0,0 +1,23 @@ +--- a/vmblock-only/shared/compat_namei.h 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmblock-only/shared/compat_namei.h 2015-02-24 03:51:25.235286047 +0300 +@@ -21,6 +21,20 @@ + + #include <linux/namei.h> + ++/* Copy-n-paste from kernel's source/fs/namei.c */ ++struct nameidata { ++ struct path path; ++ struct qstr last; ++ struct path root; ++ struct inode *inode; /* path.dentry.d_inode */ ++ unsigned int flags; ++ unsigned seq, m_seq; ++ int last_type; ++ unsigned depth; ++ struct file *base; ++ char *saved_names[MAX_NESTED_LINKS + 1]; ++}; ++ + /* + * In 2.6.25-rc2, dentry and mount objects were removed from the nameidata + * struct. They were both replaced with a struct path. diff --git a/app-emulation/vmware-modules/files/279-3.19-01-dentry.patch b/app-emulation/vmware-modules/files/279-3.19-01-dentry.patch new file mode 100644 index 000000000000..6f11a520a447 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-01-dentry.patch @@ -0,0 +1,13 @@ +--- a/vmnet-only/driver.c 2015-02-07 03:54:17.000000000 +0300 ++++ c/vmnet-only/driver.c 2015-02-24 03:58:06.043605137 +0300 +@@ -1191,8 +1191,8 @@ + struct inode *inode = NULL; + long err; + +- if (filp && filp->f_dentry) { +- inode = filp->f_dentry->d_inode; ++ if (filp && filp->f_path.dentry) { ++ inode = filp->f_path.dentry->d_inode; + } + err = VNetFileOpIoctl(inode, filp, iocmd, ioarg); + return err; diff --git a/app-emulation/vmware-modules/files/279-3.19-02-vmblock-path.patch b/app-emulation/vmware-modules/files/279-3.19-02-vmblock-path.patch new file mode 100644 index 000000000000..178d1478ae59 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-02-vmblock-path.patch @@ -0,0 +1,67 @@ +Sources: +https://531682.bugs.gentoo.org/attachment.cgi?id=396484 +https://531682.bugs.gentoo.org/attachment.cgi?id=396482 +diff -rupN vmblock-only.orig/linux/dentry.c vmblock-only/linux/dentry.c +--- vmblock-only.orig/linux/dentry.c 2015-02-14 18:05:46.000000000 -0500 ++++ vmblock-only/linux/dentry.c 2015-02-14 18:09:59.000000000 -0500 +@@ -63,7 +63,7 @@ DentryOpRevalidate(struct dentry *dentry + unsigned int flags) // IN: lookup flags & intent + { + VMBlockInodeInfo *iinfo; +- struct nameidata actualNd; ++ struct path actualNd; + struct dentry *actualDentry; + int ret; + +diff -rupN vmblock-only.orig/linux/filesystem.c vmblock-only/linux/filesystem.c +--- vmblock-only.orig/linux/filesystem.c 2014-11-20 19:29:15.000000000 -0500 ++++ vmblock-only/linux/filesystem.c 2015-02-14 18:10:49.000000000 -0500 +@@ -322,7 +322,7 @@ Iget(struct super_block *sb, // IN: f + { + VMBlockInodeInfo *iinfo; + struct inode *inode; +- struct nameidata actualNd; ++ struct path actualNd; + + ASSERT(sb); + +diff -rupN vmblock-only.orig/shared/compat_namei.h vmblock-only/shared/compat_namei.h +--- vmblock-only.orig/shared/compat_namei.h 2014-11-20 19:29:15.000000000 -0500 ++++ vmblock-only/shared/compat_namei.h 2015-02-14 18:08:38.000000000 -0500 +@@ -26,21 +26,21 @@ + * struct. They were both replaced with a struct path. + */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +-#define compat_vmw_nd_to_dentry(nd) (nd).path.dentry ++#define compat_vmw_nd_to_dentry(nd) (nd).dentry + #else + #define compat_vmw_nd_to_dentry(nd) (nd).dentry + #endif + + /* In 2.6.25-rc2, path_release(&nd) was replaced with path_put(&nd.path). */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +-#define compat_path_release(nd) path_put(&(nd)->path) ++#define compat_path_release(nd) path_put(nd) + #else + #define compat_path_release(nd) path_release(nd) + #endif + + /* path_lookup was removed in 2.6.39 merge window VFS merge */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) +-#define compat_path_lookup(name, flags, nd) kern_path(name, flags, &((nd)->path)) ++#define compat_path_lookup(name, flags, nd) kern_path(name, flags, nd) + #else + #define compat_path_lookup(name, flags, nd) path_lookup(name, flags, nd) + #endif +diff -u vmblock-only.orig/linux/file.c vmblock-only/linux/file.c +--- vmblock-only.orig/linux/file.c 2015-02-11 12:18:29.000000000 -0500 ++++ vmblock-only/linux/file.c 2015-02-11 12:41:41.000000000 -0500 +@@ -92,7 +92,7 @@ + * and that would try to acquire the inode's semaphore; if the two inodes + * are the same we'll deadlock. + */ +- if (actualFile->f_dentry && inode == actualFile->f_dentry->d_inode) { ++ if (actualFile->f_path.dentry && inode == actualFile->f_path.dentry->d_inode) { + Warning("FileOpOpen: identical inode encountered, open cannot succeed.\n"); + if (filp_close(actualFile, current->files) < 0) { + Warning("FileOpOpen: unable to close opened file.\n"); diff --git a/app-emulation/vmware-modules/files/279-3.19-03-iovec.patch b/app-emulation/vmware-modules/files/279-3.19-03-iovec.patch new file mode 100644 index 000000000000..b016fec1e652 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-03-iovec.patch @@ -0,0 +1,19 @@ +--- a/vmnet-only/userif.c 2015-02-07 03:54:17.000000000 +0300 ++++ c/vmnet-only/userif.c 2015-02-24 03:58:06.043605137 +0300 +@@ -523,7 +523,15 @@ + .iov_base = buf, + .iov_len = len, + }; +- return skb_copy_datagram_iovec(skb, 0, &iov, len); ++ ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) ++ return skb_copy_datagram_iovec(skb, 0, &iov, len); ++#else ++ struct iov_iter to; ++ iov_iter_init(&to, READ, &iov, 1, len); ++ return skb_copy_datagram_iter(skb, 0, &to, len); ++#endif + } + + diff --git a/app-emulation/vmware-modules/files/279-3.19-04-iovec.patch b/app-emulation/vmware-modules/files/279-3.19-04-iovec.patch new file mode 100644 index 000000000000..9103c555663d --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-04-iovec.patch @@ -0,0 +1,39 @@ +diff -rupN vmci-only.old/linux/vmciKernelIf.c vmci-only/linux/vmciKernelIf.c +--- vmci-only.old/linux/vmciKernelIf.c 2015-04-28 18:05:56.000000000 +0000 ++++ vmci-only/linux/vmciKernelIf.c 2015-07-06 08:02:08.314262258 +0000 +@@ -40,6 +40,7 @@ + #include <linux/socket.h> /* For memcpy_{to,from}iovec(). */ + #include <linux/vmalloc.h> + #include <linux/wait.h> ++#include <linux/skbuff.h> + + #include "compat_highmem.h" + #include "compat_interrupt.h" +@@ -1227,11 +1228,11 @@ __VMCIMemcpyToQueue(VMCIQueue *queue, + } + + if (isIovec) { +- struct iovec *iov = (struct iovec *)src; ++ struct msghdr *msg = (struct msghdr *)src; + int err; + + /* The iovec will track bytesCopied internally. */ +- err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy); ++ err = memcpy_from_msg((u8 *)va + pageOffset, msg, toCopy); + if (err != 0) { + if (!kernelIf->isDataMapped) { + kunmap(kernelIf->page[pageIndex]); +@@ -1302,11 +1303,11 @@ __VMCIMemcpyFromQueue(void *dest, + } + + if (isIovec) { +- struct iovec *iov = (struct iovec *)dest; ++ struct msghdr *msg = (struct msghdr *)dest; + int err; + + /* The iovec will track bytesCopied internally. */ +- err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy); ++ err = memcpy_to_msg(msg, (uint8 *)va + pageOffset, toCopy); + if (err != 0) { + if (!kernelIf->isDataMapped) { + kunmap(kernelIf->page[pageIndex]); diff --git a/app-emulation/vmware-modules/files/279-3.19-05-vmci_qpair.patch b/app-emulation/vmware-modules/files/279-3.19-05-vmci_qpair.patch new file mode 100644 index 000000000000..1849a378456e --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-05-vmci_qpair.patch @@ -0,0 +1,24 @@ +diff -rupN vsock-only.old/linux/af_vsock.c vsock-only/linux/af_vsock.c +--- vsock-only.old/linux/af_vsock.c 2015-05-06 20:41:47.684046762 -0400 ++++ vsock-only/linux/af_vsock.c 2015-05-06 20:52:15.245080779 -0400 +@@ -4629,7 +4629,7 @@ VSockVmciStreamSendmsg(struct kiocb *kio + * able to send. + */ + +- written = vmci_qpair_enquev(vsk->qpair, msg->msg_iov, ++ written = vmci_qpair_enquev(vsk->qpair, &msg->msg_iter.iov, + len - totalWritten, 0); + if (written < 0) { + err = -ENOMEM; +@@ -4874,9 +4874,9 @@ VSockVmciStreamRecvmsg(struct kiocb *kio + } + + if (flags & MSG_PEEK) { +- read = vmci_qpair_peekv(vsk->qpair, msg->msg_iov, len - copied, 0); ++ read = vmci_qpair_peekv(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); + } else { +- read = vmci_qpair_dequev(vsk->qpair, msg->msg_iov, len - copied, 0); ++ read = vmci_qpair_dequev(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); + } + + if (read < 0) { diff --git a/app-emulation/vmware-modules/files/279-3.19-06-vsock.patch b/app-emulation/vmware-modules/files/279-3.19-06-vsock.patch new file mode 100644 index 000000000000..2e412301d096 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-06-vsock.patch @@ -0,0 +1,15 @@ +diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c +--- vsock-only/linux/af_vsock.c 2015-05-05 11:31:35.710099711 -0400 ++++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:36:33.260115840 -0400 +@@ -4727,7 +4727,11 @@ VSockVmciDgramRecvmsg(struct kiocb *kioc + } + + /* Place the datagram payload in the user's iovec. */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) + err = skb_copy_datagram_iovec(skb, sizeof *dg, msg->msg_iov, payloadLen); ++#else ++ err = skb_copy_datagram_iter(skb, sizeof *dg, &msg->msg_iter, payloadLen); ++#endif + if (err) { + goto out; + } diff --git a/app-emulation/vmware-modules/files/279-3.19-07-vsock.patch b/app-emulation/vmware-modules/files/279-3.19-07-vsock.patch new file mode 100644 index 000000000000..8c9d3cb6dfe3 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-07-vsock.patch @@ -0,0 +1,12 @@ +diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c +--- vsock-only/linux/af_vsock.c 2015-05-05 11:26:05.145081792 -0400 ++++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:30:54.304097466 -0400 +@@ -4266,7 +4266,7 @@ VSockVmciDgramSendmsg(struct kiocb *kioc + goto out; + } + +- memcpy_fromiovec(VMCI_DG_PAYLOAD(dg), msg->msg_iov, len); ++ memcpy_from_msg(VMCI_DG_PAYLOAD(dg), msg, len); + + dg->dst = VMCI_MAKE_HANDLE(remoteAddr->svm_cid, remoteAddr->svm_port); + dg->src = VMCI_MAKE_HANDLE(vsk->localAddr.svm_cid, vsk->localAddr.svm_port); diff --git a/app-emulation/vmware-modules/files/279-4.2-00-cookie.patch b/app-emulation/vmware-modules/files/279-4.2-00-cookie.patch new file mode 100644 index 000000000000..e2ab8a15f16b --- /dev/null +++ b/app-emulation/vmware-modules/files/279-4.2-00-cookie.patch @@ -0,0 +1,79 @@ +See https://bugs.gentoo.org/show_bug.cgi?id=559602 +Patch by Mike Auty <ikelos@gentoo.org> + +diff --git a/vmblock-only/linux/inode.c b/vmblock-only/linux/inode.c +index 4811abd..2cbc1f6 100644 +--- a/vmblock-only/linux/inode.c ++++ b/vmblock-only/linux/inode.c +@@ -38,7 +38,9 @@ + static struct dentry *InodeOpLookup(struct inode *dir, + struct dentry *dentry, unsigned int flags); + static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); + #else + static int InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); +@@ -207,7 +209,12 @@ static void * + static int + #endif + InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink +- struct nameidata *nd) // OUT: stores result ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++ void **cookie ++#else ++ struct nameidata *nd ++#endif ++ ) // OUT: stores result + { + int ret; + VMBlockInodeInfo *iinfo; +diff --git a/vmblock-only/linux/inode.c b/vmblock-only/linux/inode.c +index acb2803..4811abd 100644 +--- a/vmblock-only/linux/inode.c ++++ b/vmblock-only/linux/inode.c +@@ -199,7 +199,9 @@ InodeOpReadlink(struct dentry *dentry, // IN : dentry of symlink + *---------------------------------------------------------------------------- + */ + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++static const char * ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void * + #else + static int +@@ -222,8 +224,12 @@ InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink + goto out; + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++ return *cookie = (char *)(iinfo->name); ++#else + nd_set_link(nd, iinfo->name); + ret = 0; ++#endif + + out: + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) +diff --git a/vmnet-only/vmnetInt.h b/vmnet-only/vmnetInt.h +index 23b5d19..d129f7b 100644 +--- a/vmnet-only/vmnetInt.h ++++ b/vmnet-only/vmnetInt.h +@@ -78,8 +78,13 @@ + + extern struct proto vmnet_proto; + #ifdef VMW_NETDEV_HAS_NET ++# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) + # define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \ +- PF_NETLINK, _pri, &vmnet_proto) ++ PF_NETLINK, _pri, &vmnet_proto, 1) ++# else ++# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \ ++ PF_NETLINK, _pri, &vmnet_proto) ++# endif + #else + # define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1) + #endif diff --git a/app-emulation/vmware-modules/files/279-5.10-00-userns.patch b/app-emulation/vmware-modules/files/279-5.10-00-userns.patch new file mode 100644 index 000000000000..7a1bb987fecd --- /dev/null +++ b/app-emulation/vmware-modules/files/279-5.10-00-userns.patch @@ -0,0 +1,16 @@ +correctly initializes UID/GID values +gets UID correctly in light of user namespace API +origionally from https://462666.bugs.gentoo.org/attachment.cgi?id=342888 + +--- a/vmblock-only/linux/inode.c 2013-03-20 17:37:48.000000000 +0100 ++++ b/vmblock-only/linux/inode.c 2013-03-20 17:41:22.000000000 +0100 +@@ -135,7 +135,8 @@ + inode->i_size = INODE_TO_IINFO(inode)->nameLen; + inode->i_version = 1; + inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; +- inode->i_uid = inode->i_gid = 0; ++ inode->i_uid = GLOBAL_ROOT_UID; ++ inode->i_gid = GLOBAL_ROOT_GID; + inode->i_op = &LinkInodeOps; + + d_add(dentry, inode); diff --git a/app-emulation/vmware-modules/files/279-apic.patch b/app-emulation/vmware-modules/files/279-apic.patch new file mode 100644 index 000000000000..66cd45933246 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-apic.patch @@ -0,0 +1,12 @@ +diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c +index f1f4b10..c43242f 100644 +--- a/vmmon-only/linux/hostif.c ++++ b/vmmon-only/linux/hostif.c +@@ -55,6 +55,7 @@ + #include <linux/kthread.h> + #include <linux/wait.h> + ++#include <asm/apic.h> + + #include "vmware.h" + #include "x86apic.h" diff --git a/app-emulation/vmware-modules/files/279-filldir.patch b/app-emulation/vmware-modules/files/279-filldir.patch new file mode 100644 index 000000000000..6eb1f315cd97 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-filldir.patch @@ -0,0 +1,91 @@ +diff --git a/vmblock-only/linux/file.c b/vmblock-only/linux/file.c +index d7ac1f6..5499169 100644 +--- a/vmblock-only/linux/file.c ++++ b/vmblock-only/linux/file.c +@@ -38,46 +38,6 @@ typedef u64 inode_num_t; + typedef ino_t inode_num_t; + #endif + +-/* Specifically for our filldir_t callback */ +-typedef struct FilldirInfo { +- filldir_t filldir; +- void *dirent; +-} FilldirInfo; +- +- +-/* +- *---------------------------------------------------------------------------- +- * +- * Filldir -- +- * +- * Callback function for readdir that we use in place of the one provided. +- * This allows us to specify that each dentry is a symlink, but pass through +- * everything else to the original filldir function. +- * +- * Results: +- * Original filldir's return value. +- * +- * Side effects: +- * Directory information gets copied to user's buffer. +- * +- *---------------------------------------------------------------------------- +- */ +- +-static int +-Filldir(void *buf, // IN: Dirent buffer passed from FileOpReaddir +- const char *name, // IN: Dirent name +- int namelen, // IN: len of dirent's name +- loff_t offset, // IN: Offset +- inode_num_t ino, // IN: Inode number of dirent +- unsigned int d_type) // IN: Type of file +-{ +- FilldirInfo *info = buf; +- +- /* Specify DT_LNK regardless */ +- return info->filldir(info->dirent, name, namelen, offset, ino, DT_LNK); +-} +- +- + /* File operations */ + + /* +@@ -166,11 +126,10 @@ FileOpOpen(struct inode *inode, // IN + + static int + FileOpReaddir(struct file *file, // IN +- void *dirent, // IN +- filldir_t filldir) // IN ++ struct dir_context *ctx) // IN + { + int ret; +- FilldirInfo info; ++ + struct file *actualFile; + + if (!file) { +@@ -184,12 +143,10 @@ FileOpReaddir(struct file *file, // IN + return -EINVAL; + } + +- info.filldir = filldir; +- info.dirent = dirent; +- +- actualFile->f_pos = file->f_pos; +- ret = vfs_readdir(actualFile, Filldir, &info); +- file->f_pos = actualFile->f_pos; ++ /* Ricky Wong Yung Fei: ++ * Manipulation of pos is now handled internally by iterate_dir(). ++ */ ++ ret = iterate_dir(actualFile, ctx); + + return ret; + } +@@ -237,7 +194,7 @@ FileOpRelease(struct inode *inode, // IN + + + struct file_operations RootFileOps = { +- .readdir = FileOpReaddir, ++ .iterate = FileOpReaddir, + .open = FileOpOpen, + .release = FileOpRelease, + }; diff --git a/app-emulation/vmware-modules/files/279-hardened.patch b/app-emulation/vmware-modules/files/279-hardened.patch new file mode 100644 index 000000000000..cc3e04152877 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-hardened.patch @@ -0,0 +1,113 @@ +diff --git a/vmmon-only/linux/driver.c b/vmmon-only/linux/driver.c +index b21dd44..960c2aa 100644 +--- a/vmmon-only/linux/driver.c ++++ b/vmmon-only/linux/driver.c +@@ -178,7 +178,22 @@ static struct vm_operations_struct vmuser_mops = { + #endif + }; + +-static struct file_operations vmuser_fops; ++static struct file_operations vmuser_fops = { ++ .owner = THIS_MODULE, ++ .poll = LinuxDriverPoll, ++#ifdef HAVE_UNLOCKED_IOCTL ++ .unlocked_ioctl = LinuxDriver_UnlockedIoctl, ++#else ++ .ioctl = LinuxDriver_Ioctl, ++#endif ++#ifdef HAVE_COMPAT_IOCTL ++ .compat_ioctl = LinuxDriver_UnlockedIoctl, ++#endif ++ .open = LinuxDriver_Open, ++ .release = LinuxDriver_Close, ++ .mmap = LinuxDriverMmap ++}; ++ + static struct timer_list tscTimer; + + /* +@@ -357,27 +372,6 @@ init_module(void) + spin_lock_init(&linuxState.pollListLock); + #endif + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vmuser_fops, 0, sizeof vmuser_fops); +- vmuser_fops.owner = THIS_MODULE; +- vmuser_fops.poll = LinuxDriverPoll; +-#ifdef HAVE_UNLOCKED_IOCTL +- vmuser_fops.unlocked_ioctl = LinuxDriver_UnlockedIoctl; +-#else +- vmuser_fops.ioctl = LinuxDriver_Ioctl; +-#endif +-#ifdef HAVE_COMPAT_IOCTL +- vmuser_fops.compat_ioctl = LinuxDriver_UnlockedIoctl; +-#endif +- vmuser_fops.open = LinuxDriver_Open; +- vmuser_fops.release = LinuxDriver_Close; +- vmuser_fops.mmap = LinuxDriverMmap; +- + #ifdef VMX86_DEVEL + devel_init_module(); + linuxState.minor = 0; +diff --git a/vmnet-only/driver.c b/vmnet-only/driver.c +index b12b982..40bd4cf 100644 +--- a/vmnet-only/driver.c ++++ b/vmnet-only/driver.c +@@ -165,7 +165,22 @@ static long VNetFileOpUnlockedIoctl(struct file * filp, + unsigned int iocmd, unsigned long ioarg); + #endif + +-static struct file_operations vnetFileOps; ++static struct file_operations vnetFileOps = { ++ .owner = THIS_MODULE, ++ .read = VNetFileOpRead, ++ .write = VNetFileOpWrite, ++ .poll = VNetFileOpPoll, ++#ifdef HAVE_UNLOCKED_IOCTL ++ .unlocked_ioctl = VNetFileOpUnlockedIoctl, ++#else ++ .ioctl = VNetFileOpIoctl, ++#endif ++#ifdef HAVE_COMPAT_IOCTL ++ .compat_ioctl = VNetFileOpUnlockedIoctl, ++#endif ++ .open = VNetFileOpOpen, ++ .release = VNetFileOpClose ++}; + + /* + * Utility functions +@@ -476,28 +491,6 @@ init_module(void) + goto err_proto; + } + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vnetFileOps, 0, sizeof vnetFileOps); +- vnetFileOps.owner = THIS_MODULE; +- vnetFileOps.read = VNetFileOpRead; +- vnetFileOps.write = VNetFileOpWrite; +- vnetFileOps.poll = VNetFileOpPoll; +-#ifdef HAVE_UNLOCKED_IOCTL +- vnetFileOps.unlocked_ioctl = VNetFileOpUnlockedIoctl; +-#else +- vnetFileOps.ioctl = VNetFileOpIoctl; +-#endif +-#ifdef HAVE_COMPAT_IOCTL +- vnetFileOps.compat_ioctl = VNetFileOpUnlockedIoctl; +-#endif +- vnetFileOps.open = VNetFileOpOpen; +- vnetFileOps.release = VNetFileOpClose; +- + retval = register_chrdev(VNET_MAJOR_NUMBER, "vmnet", &vnetFileOps); + if (retval) { + LOG(0, (KERN_NOTICE "/dev/vmnet: could not register major device %d\n", diff --git a/app-emulation/vmware-modules/files/279-makefile-include.patch b/app-emulation/vmware-modules/files/279-makefile-include.patch new file mode 100644 index 000000000000..39c300030805 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-makefile-include.patch @@ -0,0 +1,65 @@ +diff --git a/vmblock-only/Makefile.kernel b/vmblock-only/Makefile.kernel +index ab7a727..e3ec9d2 100644 +--- a/vmblock-only/Makefile.kernel ++++ b/vmblock-only/Makefile.kernel +@@ -19,7 +19,7 @@ + + INCLUDE += -I$(SRCROOT)/include + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachecreate.c, -DVMW_KMEMCR_HAS_DTOR, ) + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachector.c, -DVMW_KMEMCR_CTOR_HAS_3_ARGS, ) +diff --git a/vmci-only/Makefile.kernel b/vmci-only/Makefile.kernel +index ba343ee..861ea83 100644 +--- a/vmci-only/Makefile.kernel ++++ b/vmci-only/Makefile.kernel +@@ -21,7 +21,7 @@ CC_OPTS += -DVMCI + + INCLUDE += -I$(SRCROOT)/shared -I$(SRCROOT)/common -I$(SRCROOT)/linux + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + obj-m += $(DRIVER).o + +diff --git a/vmmon-only/Makefile.kernel b/vmmon-only/Makefile.kernel +index 8770d1d..c4746c3 100644 +--- a/vmmon-only/Makefile.kernel ++++ b/vmmon-only/Makefile.kernel +@@ -22,7 +22,7 @@ CC_OPTS += -DVMMON -DVMCORE + INCLUDE := -I$(SRCROOT)/include -I$(SRCROOT)/common -I$(SRCROOT)/linux \ + -I$(SRCROOT)/vmcore + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/smpcall.c, -DVMW_HAVE_SMP_CALL_3ARG, ) + +diff --git a/vmnet-only/Makefile.kernel b/vmnet-only/Makefile.kernel +index d1e3133..665d428 100644 +--- a/vmnet-only/Makefile.kernel ++++ b/vmnet-only/Makefile.kernel +@@ -19,7 +19,7 @@ + + INCLUDE := -I$(SRCROOT) + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_net.c,-DVMW_NETDEV_HAS_NET, ) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_dev_net.c,-DVMW_NETDEV_HAS_DEV_NET, ) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/nfhook_uses_skb.c,-DVMW_NFHOOK_USES_SKB, ) +diff --git a/vsock-only/Makefile.kernel b/vsock-only/Makefile.kernel +index b4629ee..264b8cb 100644 +--- a/vsock-only/Makefile.kernel ++++ b/vsock-only/Makefile.kernel +@@ -25,7 +25,7 @@ INCLUDE += -I$(SRCROOT)/include + INCLUDE += -I$(SRCROOT)/linux + INCLUDE += -I$(SRCROOT)/common + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/netcreate_num_params.c, -DVMW_NETCREATE_KERNARG, ) + + diff --git a/app-emulation/vmware-modules/files/279-makefile-kernel-dir.patch b/app-emulation/vmware-modules/files/279-makefile-kernel-dir.patch new file mode 100644 index 000000000000..1a647a3302d8 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-makefile-kernel-dir.patch @@ -0,0 +1,85 @@ +diff --git a/vmblock-only/Makefile b/vmblock-only/Makefile +index 2b81323..746c8b8 100644 +--- a/vmblock-only/Makefile ++++ b/vmblock-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmblock + PRODUCT := ws +diff --git a/vmci-only/Makefile b/vmci-only/Makefile +index 8e9c5be..6ec828b 100644 +--- a/vmci-only/Makefile ++++ b/vmci-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmci + PRODUCT := ws +diff --git a/vmmon-only/Makefile b/vmmon-only/Makefile +index 5bd867b..91a83d4 100644 +--- a/vmmon-only/Makefile ++++ b/vmmon-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmmon + PRODUCT := @@PRODUCT@@ +diff --git a/vmnet-only/Makefile b/vmnet-only/Makefile +index d4eb73c..c7c6d38 100644 +--- a/vmnet-only/Makefile ++++ b/vmnet-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmnet + PRODUCT := @@PRODUCT@@ +diff --git a/vsock-only/Makefile b/vsock-only/Makefile +index 93dd61d..9765696 100644 +--- a/vsock-only/Makefile ++++ b/vsock-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vsock + PRODUCT := ws diff --git a/app-emulation/vmware-modules/files/279-netdevice.patch b/app-emulation/vmware-modules/files/279-netdevice.patch new file mode 100644 index 000000000000..35231a3205e3 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-netdevice.patch @@ -0,0 +1,24 @@ +diff --git a/vmnet-only/compat_netdevice.h b/vmnet-only/compat_netdevice.h +index 7a56304..9ff4548 100644 +--- a/vmnet-only/compat_netdevice.h ++++ b/vmnet-only/compat_netdevice.h +@@ -47,6 +47,19 @@ + # define net_device device + #endif + ++/* it looks like these have been removed from the kernel 3.1 ++ * probably because the "transition" is considered complete. ++ * so to keep this source compatible we just redefine them like they were ++ * previously ++ */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0) ++#define HAVE_ALLOC_NETDEV /* feature macro: alloc_xxxdev ++ functions are available. */ ++#define HAVE_FREE_NETDEV /* free_netdev() */ ++#define HAVE_NETDEV_PRIV /* netdev_priv() */ ++#define HAVE_NETIF_QUEUE ++#define HAVE_NET_DEVICE_OPS ++#endif + + /* + * SET_MODULE_OWNER appeared sometime during 2.3.x. It was setting diff --git a/app-emulation/vmware-modules/files/279-putname.patch b/app-emulation/vmware-modules/files/279-putname.patch new file mode 100644 index 000000000000..6e76130fa165 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-putname.patch @@ -0,0 +1,13 @@ +diff --git a/vmblock-only/linux/control.c b/vmblock-only/linux/control.c +index 79716bd..2dd83fe 100644 +--- a/vmblock-only/linux/control.c ++++ b/vmblock-only/linux/control.c +@@ -293,7 +293,7 @@ ExecuteBlockOp(const char __user *buf, // IN: buffer with name + + retval = i < 0 ? -EINVAL : blockOp(name, blocker); + +- putname(name); ++ __putname(name); + + return retval; + } diff --git a/app-emulation/vmware-modules/files/279-vfsfollowlink.patch b/app-emulation/vmware-modules/files/279-vfsfollowlink.patch new file mode 100644 index 000000000000..13f600e39f33 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-vfsfollowlink.patch @@ -0,0 +1,30 @@ +diff -Naur a/linux/inode.c b/linux/inode.c +--- a/vmblock-only/linux/inode.c 2013-10-03 04:29:47.471339204 -0400 ++++ b/vmblock-only/linux/inode.c 2013-10-03 04:31:56.607334636 -0400 +@@ -36,7 +36,7 @@ + + /* Inode operations */ + static struct dentry *InodeOpLookup(struct inode *dir, +- struct dentry *dentry, struct nameidata *nd); ++ struct dentry *dentry, unsigned int flags); + static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); +@@ -75,7 +75,7 @@ + static struct dentry * + InodeOpLookup(struct inode *dir, // IN: parent directory's inode + struct dentry *dentry, // IN: dentry to lookup +- struct nameidata *nd) // IN: lookup intent and information ++ unsigned int flags) // IN: lookup intent and information + { + char *filename; + struct inode *inode; +@@ -221,7 +221,7 @@ + goto out; + } + +- ret = vfs_follow_link(nd, iinfo->name); ++ nd_set_link(nd, iinfo->name); + + out: + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) diff --git a/app-emulation/vmware-modules/files/279-vmblock.patch b/app-emulation/vmware-modules/files/279-vmblock.patch new file mode 100644 index 000000000000..0daf60355618 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-vmblock.patch @@ -0,0 +1,23 @@ +diff -ruN work.orig/vmblock-only/linux/control.c work/vmblock-only/linux/control.c +--- work.orig/vmblock-only/linux/control.c 2013-11-02 18:05:39.960226399 +0100 ++++ work/vmblock-only/linux/control.c 2013-11-02 18:09:11.760231432 +0100 +@@ -208,17 +208,14 @@ + VMBlockSetProcEntryOwner(controlProcMountpoint); + + /* Create /proc/fs/vmblock/dev */ +- controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME, +- VMBLOCK_CONTROL_MODE, +- controlProcDirEntry); +- if (!controlProcEntry) { ++ controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, VMBLOCK_CONTROL_MODE, controlProcDirEntry, &ControlFileOps); ++ if (controlProcEntry == NULL) { + Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n"); + remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry); + remove_proc_entry(VMBLOCK_CONTROL_PROC_DIRNAME, NULL); + return -EINVAL; + } + +- controlProcEntry->proc_fops = &ControlFileOps; + return 0; + } + diff --git a/app-emulation/vmware-modules/files/304-3.10-00-dentry.patch b/app-emulation/vmware-modules/files/304-3.10-00-dentry.patch new file mode 100644 index 000000000000..5cc445fcadf9 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.10-00-dentry.patch @@ -0,0 +1,43 @@ +Minor change the API, now it just gets passed flags instead of a pointer to the nameidata +--- a/vmblock-only/linux/dentry.c 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmblock-only/linux/dentry.c 2015-02-24 03:58:06.038605919 +0300 +@@ -32,7 +32,11 @@ + #include "block.h" + + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) + static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd); ++#else ++static int DentryOpRevalidate(struct dentry *dentry, unsigned int); ++#endif + + struct dentry_operations LinkDentryOps = { + .d_revalidate = DentryOpRevalidate, +@@ -58,9 +62,12 @@ + *---------------------------------------------------------------------------- + */ + +-static int +-DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating +- struct nameidata *nd) // IN: lookup flags & intent ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) ++static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd) ++#else ++static int DentryOpRevalidate(struct dentry *dentry, unsigned int flags) ++#endif ++ + { + VMBlockInodeInfo *iinfo; + struct nameidata actualNd; +@@ -101,7 +108,11 @@ + if (actualDentry && + actualDentry->d_op && + actualDentry->d_op->d_revalidate) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) ++ return actualDentry->d_op->d_revalidate(actualDentry, flags); ++#else + return actualDentry->d_op->d_revalidate(actualDentry, nd); ++#endif + } + + if (compat_path_lookup(iinfo->name, 0, &actualNd)) { diff --git a/app-emulation/vmware-modules/files/304-3.10-01-inode.patch b/app-emulation/vmware-modules/files/304-3.10-01-inode.patch new file mode 100644 index 000000000000..e12d84d10e7b --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.10-01-inode.patch @@ -0,0 +1,94 @@ +Minor change the API, now it just gets passed flags instead of a pointer to the nameidata +Properly initializes UID/GID with repsect to namespaces +Some changes the readlink/setlink APIs +--- a/vmblock-only/linux/inode.c 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmblock-only/linux/inode.c 2015-02-24 03:58:06.039605762 +0300 +@@ -35,9 +35,15 @@ + + + /* Inode operations */ +-static struct dentry *InodeOpLookup(struct inode *dir, +- struct dentry *dentry, struct nameidata *nd); ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) ++static struct dentry *InodeOpLookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd); + static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); ++#else ++static struct dentry *InodeOpLookup(struct inode *, struct dentry *, unsigned int); ++static int InodeOpReadlink(struct dentry *, char __user *, int); ++#endif ++ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); + #else +@@ -49,12 +55,15 @@ + .lookup = InodeOpLookup, + }; + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) + static struct inode_operations LinkInodeOps = { ++#else ++struct inode_operations LinkInodeOps = { ++#endif + .readlink = InodeOpReadlink, + .follow_link = InodeOpFollowlink, + }; + +- + /* + *---------------------------------------------------------------------------- + * +@@ -75,7 +84,11 @@ + static struct dentry * + InodeOpLookup(struct inode *dir, // IN: parent directory's inode + struct dentry *dentry, // IN: dentry to lookup +- struct nameidata *nd) // IN: lookup intent and information ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) ++ struct nameidata *nd) // IN: lookup intent and information ++#else ++ unsigned int flags) ++#endif + { + char *filename; + struct inode *inode; +@@ -135,7 +148,12 @@ + inode->i_size = INODE_TO_IINFO(inode)->nameLen; + inode->i_version = 1; + inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) + inode->i_uid = inode->i_gid = 0; ++#else ++ inode->i_gid = make_kgid(current_user_ns(), 0); ++ inode->i_uid = make_kuid(current_user_ns(), 0); ++#endif + inode->i_op = &LinkInodeOps; + + d_add(dentry, inode); +@@ -177,7 +195,12 @@ + return -EINVAL; + } + +- return vfs_readlink(dentry, buffer, buflen, iinfo->name); ++#if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 14, 99) ++ return vfs_readlink(dentry, buffer, buflen, iinfo->name); ++#else ++ return readlink_copy(buffer, buflen, iinfo->name); ++#endif ++ + } + + +@@ -221,7 +244,7 @@ + goto out; + } + +- ret = vfs_follow_link(nd, iinfo->name); ++ nd_set_link(nd, iinfo->name); + + out: + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) +@@ -230,3 +253,4 @@ + return ret; + #endif + } ++ diff --git a/app-emulation/vmware-modules/files/304-3.10-02-control.patch b/app-emulation/vmware-modules/files/304-3.10-02-control.patch new file mode 100644 index 000000000000..928835337511 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.10-02-control.patch @@ -0,0 +1,57 @@ +The API to create proc entries now takes the file ops structure directly, instead of being set after the fact +Using new __getname/__putname API +--- a/vmblock-only/linux/control.c 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmblock-only/linux/control.c 2015-02-24 03:58:06.038605919 +0300 +@@ -208,9 +208,11 @@ + VMBlockSetProcEntryOwner(controlProcMountpoint); + + /* Create /proc/fs/vmblock/dev */ +- controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME, +- VMBLOCK_CONTROL_MODE, +- controlProcDirEntry); ++ controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, ++ VMBLOCK_CONTROL_MODE, ++ controlProcDirEntry, ++ &ControlFileOps); ++ + if (!controlProcEntry) { + Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n"); + remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry); +@@ -218,7 +220,10 @@ + return -EINVAL; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) + controlProcEntry->proc_fops = &ControlFileOps; ++#endif ++ + return 0; + } + +@@ -287,18 +287,24 @@ ExecuteBlockOp(const char __user *buf, + int i; + int retval; + +- name = getname(buf); ++ name = __getname(); + if (IS_ERR(name)) { + return PTR_ERR(name); + } + ++ i = strncpy_from_user(name, buf, PATH_MAX); ++ if (i < 0 || i == PATH_MAX) { ++ __putname(name); ++ return -EINVAL; ++ } ++ + for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) { + name[i] = '\0'; + } + + retval = i < 0 ? -EINVAL : blockOp(name, blocker); + +- putname(name); ++ __putname(name); + + return retval; + } diff --git a/app-emulation/vmware-modules/files/304-3.10-03-inline.patch b/app-emulation/vmware-modules/files/304-3.10-03-inline.patch new file mode 100644 index 000000000000..fa8f36a35c29 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.10-03-inline.patch @@ -0,0 +1,14 @@ +Hushes a warning +--- a/vmmon-only/linux/driver.c 2015-02-07 03:54:16.000000000 +0300 ++++ c/vmmon-only/linux/driver.c 2015-02-24 03:58:06.042605293 +0300 +@@ -1328,7 +1328,9 @@ + *----------------------------------------------------------------------------- + */ + +-__attribute__((always_inline)) static Bool ++#include <linux/compiler-gcc.h> ++ ++__always_inline static Bool + LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min + { + TSCDelta tscDelta; diff --git a/app-emulation/vmware-modules/files/304-3.11-00-readdir.patch b/app-emulation/vmware-modules/files/304-3.11-00-readdir.patch new file mode 100644 index 000000000000..b2f76d3e2b30 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.11-00-readdir.patch @@ -0,0 +1,41 @@ +replaces usage of vfs_readdir with iterate_dir. origionally found here: +https://bugs.gentoo.org/show_bug.cgi?id=508204 + +diff -Naur vmblock-only/linux/file.c vmblock-only/linux/file.c +--- vmblock-only/linux/file.c 2013-11-05 23:33:26.000000000 -0500 ++++ vmblock-only/linux/file.c 2014-04-26 10:58:03.062635343 -0400 +@@ -166,11 +166,9 @@ + + static int + FileOpReaddir(struct file *file, // IN +- void *dirent, // IN +- filldir_t filldir) // IN ++ struct dir_context *ctx) + { + int ret; +- FilldirInfo info; + struct file *actualFile; + + if (!file) { +@@ -184,11 +182,8 @@ + return -EINVAL; + } + +- info.filldir = filldir; +- info.dirent = dirent; +- + actualFile->f_pos = file->f_pos; +- ret = vfs_readdir(actualFile, Filldir, &info); ++ ret = iterate_dir(actualFile, ctx); + file->f_pos = actualFile->f_pos; + + return ret; +@@ -237,7 +232,7 @@ + + + struct file_operations RootFileOps = { +- .readdir = FileOpReaddir, ++ .iterate = FileOpReaddir, + .open = FileOpOpen, + .release = FileOpRelease, + }; diff --git a/app-emulation/vmware-modules/files/304-3.11-01-filldir.patch b/app-emulation/vmware-modules/files/304-3.11-01-filldir.patch new file mode 100644 index 000000000000..2eec99b7c1f8 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.11-01-filldir.patch @@ -0,0 +1,53 @@ +simply remove the code for Filldir since it is no longer used with the new +iterate_dir API + +diff -rupN vmblock-only/linux/file.c vmblock-only.new/linux/file.c +--- vmblock-only/linux/file.c 2014-10-07 23:22:46.832469618 -0400 ++++ vmblock-only.new/linux/file.c 2014-10-07 23:24:35.276472720 -0400 +@@ -38,46 +38,6 @@ typedef u64 inode_num_t; + typedef ino_t inode_num_t; + #endif + +-/* Specifically for our filldir_t callback */ +-typedef struct FilldirInfo { +- filldir_t filldir; +- void *dirent; +-} FilldirInfo; +- +- +-/* +- *---------------------------------------------------------------------------- +- * +- * Filldir -- +- * +- * Callback function for readdir that we use in place of the one provided. +- * This allows us to specify that each dentry is a symlink, but pass through +- * everything else to the original filldir function. +- * +- * Results: +- * Original filldir's return value. +- * +- * Side effects: +- * Directory information gets copied to user's buffer. +- * +- *---------------------------------------------------------------------------- +- */ +- +-static int +-Filldir(void *buf, // IN: Dirent buffer passed from FileOpReaddir +- const char *name, // IN: Dirent name +- int namelen, // IN: len of dirent's name +- loff_t offset, // IN: Offset +- inode_num_t ino, // IN: Inode number of dirent +- unsigned int d_type) // IN: Type of file +-{ +- FilldirInfo *info = buf; +- +- /* Specify DT_LNK regardless */ +- return info->filldir(info->dirent, name, namelen, offset, ino, DT_LNK); +-} +- +- + /* File operations */ + + /* diff --git a/app-emulation/vmware-modules/files/304-3.15-00-vsock.patch b/app-emulation/vmware-modules/files/304-3.15-00-vsock.patch new file mode 100644 index 000000000000..9e8d9d1a32f7 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.15-00-vsock.patch @@ -0,0 +1,46 @@ +removing the no longer existing second parameter to sk_data_ready +doesn't seem it ever served a purpose. + +diff -rupN vsock-only/linux/notify.c vsock-only.new/linux/notify.c +--- vsock-only/linux/notify.c 2013-11-05 23:33:27.000000000 -0500 ++++ vsock-only.new/linux/notify.c 2014-10-05 23:46:47.943304728 -0400 +@@ -515,8 +515,11 @@ VSockVmciHandleWrote(struct sock *sk, + vsk = vsock_sk(sk); + PKT_FIELD(vsk, sentWaitingRead) = FALSE; + #endif +- ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + +diff -rupN vsock-only/linux/notifyQState.c vsock-only.new/linux/notifyQState.c +--- vsock-only/linux/notifyQState.c 2013-11-05 23:33:27.000000000 -0500 ++++ vsock-only.new/linux/notifyQState.c 2014-10-05 23:46:33.231303931 -0400 +@@ -164,7 +164,11 @@ VSockVmciHandleWrote(struct sock *sk, + struct sockaddr_vm *dst, // IN: unused + struct sockaddr_vm *src) // IN: unused + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + +@@ -566,7 +570,11 @@ VSockVmciNotifyPktRecvPostDequeue(struct + } + + /* See the comment in VSockVmciNotifyPktSendPostEnqueue */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + return err; diff --git a/app-emulation/vmware-modules/files/304-3.18-00-version-redefined.patch b/app-emulation/vmware-modules/files/304-3.18-00-version-redefined.patch new file mode 100644 index 000000000000..22d6325c9a90 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.18-00-version-redefined.patch @@ -0,0 +1,25 @@ +Hushes some (but not all warnings) relating to redefinitions of this define +--- a/vmci-only/shared/vm_device_version.h 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmci-only/shared/vm_device_version.h 2015-02-24 03:58:06.041605450 +0300 +@@ -53,7 +53,9 @@ + * VMware HD Audio codec + * VMware HD Audio controller + */ ++#ifndef PCI_VENDOR_ID_VMWARE + #define PCI_VENDOR_ID_VMWARE 0x15AD ++#endif + #define PCI_DEVICE_ID_VMWARE_SVGA2 0x0405 + #define PCI_DEVICE_ID_VMWARE_SVGA 0x0710 + #define PCI_DEVICE_ID_VMWARE_VGA 0x0711 +--- a/vmnet-only/vm_device_version.h 2015-02-07 03:54:16.000000000 +0300 ++++ c/vmnet-only/vm_device_version.h 2015-02-24 03:58:06.044604981 +0300 +@@ -53,7 +53,9 @@ + * VMware HD Audio codec + * VMware HD Audio controller + */ ++#ifndef PCI_VENDOR_ID_VMWARE + #define PCI_VENDOR_ID_VMWARE 0x15AD ++#endif + #define PCI_DEVICE_ID_VMWARE_SVGA2 0x0405 + #define PCI_DEVICE_ID_VMWARE_SVGA 0x0710 + #define PCI_DEVICE_ID_VMWARE_VGA 0x0711 diff --git a/app-emulation/vmware-modules/files/304-3.19-00-compat-namei.patch b/app-emulation/vmware-modules/files/304-3.19-00-compat-namei.patch new file mode 100644 index 000000000000..0182077254a1 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.19-00-compat-namei.patch @@ -0,0 +1,24 @@ +A copy of this since it is no longer exported by the kernel headers +--- a/vmblock-only/shared/compat_namei.h 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmblock-only/shared/compat_namei.h 2015-02-24 03:51:25.235286047 +0300 +@@ -21,6 +21,20 @@ + + #include <linux/namei.h> + ++/* Copy-n-paste from kernel's source/fs/namei.c */ ++struct nameidata { ++ struct path path; ++ struct qstr last; ++ struct path root; ++ struct inode *inode; /* path.dentry.d_inode */ ++ unsigned int flags; ++ unsigned seq, m_seq; ++ int last_type; ++ unsigned depth; ++ struct file *base; ++ char *saved_names[MAX_NESTED_LINKS + 1]; ++}; ++ + /* + * In 2.6.25-rc2, dentry and mount objects were removed from the nameidata + * struct. They were both replaced with a struct path. diff --git a/app-emulation/vmware-modules/files/304-3.19-01-dentry.patch b/app-emulation/vmware-modules/files/304-3.19-01-dentry.patch new file mode 100644 index 000000000000..3e3be6542dda --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.19-01-dentry.patch @@ -0,0 +1,14 @@ +There is an level of abstrxtion in the newre API as of 3.19 here +--- a/vmnet-only/driver.c 2015-02-07 03:54:17.000000000 +0300 ++++ c/vmnet-only/driver.c 2015-02-24 03:58:06.043605137 +0300 +@@ -1191,8 +1191,8 @@ + struct inode *inode = NULL; + long err; + +- if (filp && filp->f_dentry) { +- inode = filp->f_dentry->d_inode; ++ if (filp && filp->f_path.dentry) { ++ inode = filp->f_path.dentry->d_inode; + } + err = VNetFileOpIoctl(inode, filp, iocmd, ioarg); + return err; diff --git a/app-emulation/vmware-modules/files/304-3.19-02-vmblock-path.patch b/app-emulation/vmware-modules/files/304-3.19-02-vmblock-path.patch new file mode 100644 index 000000000000..178d1478ae59 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.19-02-vmblock-path.patch @@ -0,0 +1,67 @@ +Sources: +https://531682.bugs.gentoo.org/attachment.cgi?id=396484 +https://531682.bugs.gentoo.org/attachment.cgi?id=396482 +diff -rupN vmblock-only.orig/linux/dentry.c vmblock-only/linux/dentry.c +--- vmblock-only.orig/linux/dentry.c 2015-02-14 18:05:46.000000000 -0500 ++++ vmblock-only/linux/dentry.c 2015-02-14 18:09:59.000000000 -0500 +@@ -63,7 +63,7 @@ DentryOpRevalidate(struct dentry *dentry + unsigned int flags) // IN: lookup flags & intent + { + VMBlockInodeInfo *iinfo; +- struct nameidata actualNd; ++ struct path actualNd; + struct dentry *actualDentry; + int ret; + +diff -rupN vmblock-only.orig/linux/filesystem.c vmblock-only/linux/filesystem.c +--- vmblock-only.orig/linux/filesystem.c 2014-11-20 19:29:15.000000000 -0500 ++++ vmblock-only/linux/filesystem.c 2015-02-14 18:10:49.000000000 -0500 +@@ -322,7 +322,7 @@ Iget(struct super_block *sb, // IN: f + { + VMBlockInodeInfo *iinfo; + struct inode *inode; +- struct nameidata actualNd; ++ struct path actualNd; + + ASSERT(sb); + +diff -rupN vmblock-only.orig/shared/compat_namei.h vmblock-only/shared/compat_namei.h +--- vmblock-only.orig/shared/compat_namei.h 2014-11-20 19:29:15.000000000 -0500 ++++ vmblock-only/shared/compat_namei.h 2015-02-14 18:08:38.000000000 -0500 +@@ -26,21 +26,21 @@ + * struct. They were both replaced with a struct path. + */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +-#define compat_vmw_nd_to_dentry(nd) (nd).path.dentry ++#define compat_vmw_nd_to_dentry(nd) (nd).dentry + #else + #define compat_vmw_nd_to_dentry(nd) (nd).dentry + #endif + + /* In 2.6.25-rc2, path_release(&nd) was replaced with path_put(&nd.path). */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +-#define compat_path_release(nd) path_put(&(nd)->path) ++#define compat_path_release(nd) path_put(nd) + #else + #define compat_path_release(nd) path_release(nd) + #endif + + /* path_lookup was removed in 2.6.39 merge window VFS merge */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) +-#define compat_path_lookup(name, flags, nd) kern_path(name, flags, &((nd)->path)) ++#define compat_path_lookup(name, flags, nd) kern_path(name, flags, nd) + #else + #define compat_path_lookup(name, flags, nd) path_lookup(name, flags, nd) + #endif +diff -u vmblock-only.orig/linux/file.c vmblock-only/linux/file.c +--- vmblock-only.orig/linux/file.c 2015-02-11 12:18:29.000000000 -0500 ++++ vmblock-only/linux/file.c 2015-02-11 12:41:41.000000000 -0500 +@@ -92,7 +92,7 @@ + * and that would try to acquire the inode's semaphore; if the two inodes + * are the same we'll deadlock. + */ +- if (actualFile->f_dentry && inode == actualFile->f_dentry->d_inode) { ++ if (actualFile->f_path.dentry && inode == actualFile->f_path.dentry->d_inode) { + Warning("FileOpOpen: identical inode encountered, open cannot succeed.\n"); + if (filp_close(actualFile, current->files) < 0) { + Warning("FileOpOpen: unable to close opened file.\n"); diff --git a/app-emulation/vmware-modules/files/304-3.19-03-iovec.patch b/app-emulation/vmware-modules/files/304-3.19-03-iovec.patch new file mode 100644 index 000000000000..726d1173b3b3 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.19-03-iovec.patch @@ -0,0 +1,20 @@ +using new iterator based API, this matches exactly the changes made upstream as of vmware-modules-304.2 +--- a/vmnet-only/userif.c 2015-02-07 03:54:17.000000000 +0300 ++++ c/vmnet-only/userif.c 2015-02-24 03:58:06.043605137 +0300 +@@ -523,7 +523,15 @@ + .iov_base = buf, + .iov_len = len, + }; +- return skb_copy_datagram_iovec(skb, 0, &iov, len); ++ ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) ++ return skb_copy_datagram_iovec(skb, 0, &iov, len); ++#else ++ struct iov_iter to; ++ iov_iter_init(&to, READ, &iov, 1, len); ++ return skb_copy_datagram_iter(skb, 0, &to, len); ++#endif + } + + diff --git a/app-emulation/vmware-modules/files/304-3.19-04-iovec.patch b/app-emulation/vmware-modules/files/304-3.19-04-iovec.patch new file mode 100644 index 000000000000..83f0cc8fcbbf --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.19-04-iovec.patch @@ -0,0 +1,59 @@ +Some parts of the iovec API were replaced by the similar message API. Refactoring the code to use that. +--- a/vmci-only/linux/vmciKernelIf.c 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmci-only/linux/vmciKernelIf.c 2015-02-24 03:58:06.041605450 +0300 +@@ -40,6 +40,7 @@ + #include <linux/socket.h> /* For memcpy_{to,from}iovec(). */ + #include <linux/vmalloc.h> + #include <linux/wait.h> ++#include <linux/skbuff.h> + + #include "compat_highmem.h" + #include "compat_interrupt.h" +@@ -1196,21 +1197,21 @@ + } else { + toCopy = size - bytesCopied; + } +- ++ /* Code cloned from kernels drivers/misc/vmw_vmci/vmci_queue_pair.c */ + if (isIovec) { +- struct iovec *iov = (struct iovec *)src; +- int err; ++ struct msghdr *msg = (struct msghdr *)src; ++ int err; + +- /* The iovec will track bytesCopied internally. */ +- err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy); +- if (err != 0) { +- if (kernelIf->host) { +- kunmap(kernelIf->u.h.page[pageIndex]); ++ /* The iovec will track bytes_copied internally. */ ++ err = memcpy_from_msg((u8 *)va + pageOffset, msg, toCopy); ++ if (err != 0) { ++ if (kernelIf->host) ++ kunmap(kernelIf->u.h.page[pageIndex]); ++ return VMCI_ERROR_INVALID_ARGS; + } +- return VMCI_ERROR_INVALID_ARGS; +- } +- } else { +- memcpy((uint8 *)va + pageOffset, (uint8 *)src + bytesCopied, toCopy); ++ } else { ++ memcpy((u8 *)va + pageOffset, ++ (u8 *)src + bytesCopied, toCopy); + } + + bytesCopied += toCopy; +@@ -1273,11 +1274,11 @@ + } + + if (isIovec) { +- struct iovec *iov = (struct iovec *)dest; ++ struct msghdr *msg = (struct msghdr *)dest; + int err; + + /* The iovec will track bytesCopied internally. */ +- err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy); ++ err = memcpy_to_msg(msg, (uint8 *)va + pageOffset, toCopy); + if (err != 0) { + if (kernelIf->host) { + kunmap(kernelIf->u.h.page[pageIndex]); diff --git a/app-emulation/vmware-modules/files/304-3.19-05-vmci_qpair.patch b/app-emulation/vmware-modules/files/304-3.19-05-vmci_qpair.patch new file mode 100644 index 000000000000..4dec3c468206 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.19-05-vmci_qpair.patch @@ -0,0 +1,25 @@ +Some parts of the iovec API were replaced by the similar message API. Refactoring the code to use that. +diff -rupN vsock-only.old/linux/af_vsock.c vsock-only/linux/af_vsock.c +--- vsock-only.old/linux/af_vsock.c 2015-05-06 20:41:47.684046762 -0400 ++++ vsock-only/linux/af_vsock.c 2015-05-06 20:52:15.245080779 -0400 +@@ -4629,7 +4629,7 @@ VSockVmciStreamSendmsg(struct kiocb *kio + * able to send. + */ + +- written = vmci_qpair_enquev(vsk->qpair, msg->msg_iov, ++ written = vmci_qpair_enquev(vsk->qpair, &msg->msg_iter.iov, + len - totalWritten, 0); + if (written < 0) { + err = -ENOMEM; +@@ -4874,9 +4874,9 @@ VSockVmciStreamRecvmsg(struct kiocb *kio + } + + if (flags & MSG_PEEK) { +- read = vmci_qpair_peekv(vsk->qpair, msg->msg_iov, len - copied, 0); ++ read = vmci_qpair_peekv(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); + } else { +- read = vmci_qpair_dequev(vsk->qpair, msg->msg_iov, len - copied, 0); ++ read = vmci_qpair_dequev(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); + } + + if (read < 0) { diff --git a/app-emulation/vmware-modules/files/304-3.19-06-vsock.patch b/app-emulation/vmware-modules/files/304-3.19-06-vsock.patch new file mode 100644 index 000000000000..9a2096e679a4 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.19-06-vsock.patch @@ -0,0 +1,16 @@ +Some parts of the iovec API were replaced by the similar message API. Refactoring the code to use that. +diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c +--- vsock-only/linux/af_vsock.c 2015-05-05 11:31:35.710099711 -0400 ++++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:36:33.260115840 -0400 +@@ -4727,7 +4727,11 @@ VSockVmciDgramRecvmsg(struct kiocb *kioc + } + + /* Place the datagram payload in the user's iovec. */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) + err = skb_copy_datagram_iovec(skb, sizeof *dg, msg->msg_iov, payloadLen); ++#else ++ err = skb_copy_datagram_iter(skb, sizeof *dg, &msg->msg_iter, payloadLen); ++#endif + if (err) { + goto out; + } diff --git a/app-emulation/vmware-modules/files/304-3.19-07-vsock.patch b/app-emulation/vmware-modules/files/304-3.19-07-vsock.patch new file mode 100644 index 000000000000..6aec2cd3d7b5 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-3.19-07-vsock.patch @@ -0,0 +1,13 @@ +Some parts of the iovec API were replaced by the similar message API. Refactoring the code to use that. +diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c +--- vsock-only/linux/af_vsock.c 2015-05-05 11:26:05.145081792 -0400 ++++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:30:54.304097466 -0400 +@@ -4266,7 +4266,7 @@ VSockVmciDgramSendmsg(struct kiocb *kioc + goto out; + } + +- memcpy_fromiovec(VMCI_DG_PAYLOAD(dg), msg->msg_iov, len); ++ memcpy_from_msg(VMCI_DG_PAYLOAD(dg), msg, len); + + dg->dst = VMCI_MAKE_HANDLE(remoteAddr->svm_cid, remoteAddr->svm_port); + dg->src = VMCI_MAKE_HANDLE(vsk->localAddr.svm_cid, vsk->localAddr.svm_port); diff --git a/app-emulation/vmware-modules/files/304-4.2-00-inode_op.patch b/app-emulation/vmware-modules/files/304-4.2-00-inode_op.patch new file mode 100644 index 000000000000..e6f2acbbb6a0 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-4.2-00-inode_op.patch @@ -0,0 +1,45 @@ +diff -rupN vmblock-only/linux/inode.c vmblock-only.new/linux/inode.c +--- vmblock-only/linux/inode.c 2016-03-16 21:24:25.771034759 -0400 ++++ vmblock-only.new/linux/inode.c 2016-03-16 21:26:22.697036311 -0400 +@@ -44,7 +44,9 @@ static struct dentry *InodeOpLookup(stru + static int InodeOpReadlink(struct dentry *, char __user *, int); + #endif + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); + #else + static int InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); +@@ -220,7 +222,9 @@ InodeOpReadlink(struct dentry *dentry, + * + *---------------------------------------------------------------------------- + */ +- ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie) ++#else + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void * + #else +@@ -228,6 +232,7 @@ static int + #endif + InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink + struct nameidata *nd) // OUT: stores result ++#endif + { + int ret; + VMBlockInodeInfo *iinfo; +@@ -244,7 +249,11 @@ InodeOpFollowlink(struct dentry *dentry, + goto out; + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++ return *cookie = (char *)(iinfo->name); ++#else + nd_set_link(nd, iinfo->name); ++#endif + + out: + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) diff --git a/app-emulation/vmware-modules/files/304-4.2-01-inode.patch b/app-emulation/vmware-modules/files/304-4.2-01-inode.patch new file mode 100644 index 000000000000..35a275bf3367 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-4.2-01-inode.patch @@ -0,0 +1,46 @@ +--- vmblock-only/linux/inode.c.orig 2015-09-28 01:11:08.000000000 +0300 ++++ vmblock-only/linux/inode.c 2015-09-28 01:14:32.318043465 +0300 +@@ -44,7 +44,9 @@ + static int InodeOpReadlink(struct dentry *, char __user *, int); + #endif + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); + #else + static int InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); +@@ -221,13 +223,15 @@ + *---------------------------------------------------------------------------- + */ + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) +-static void * ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie) ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) ++static void * InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink ++ struct nameidata *nd) // OUT: stores result + #else +-static int +-#endif +-InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink ++static int InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink + struct nameidata *nd) // OUT: stores result ++#endif + { + int ret; + VMBlockInodeInfo *iinfo; +@@ -244,7 +248,11 @@ + goto out; + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++ return *cookie = (char *)(iinfo->name); ++#else + nd_set_link(nd, iinfo->name); ++#endif + + out: + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) diff --git a/app-emulation/vmware-modules/files/304-4.2-01-vmci_vmalloc.patch b/app-emulation/vmware-modules/files/304-4.2-01-vmci_vmalloc.patch new file mode 100644 index 000000000000..2296c060bff1 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-4.2-01-vmci_vmalloc.patch @@ -0,0 +1,13 @@ +diff -rupN vmci-only/linux/driver.c vmci-only.new/linux/driver.c +--- vmci-only/linux/driver.c 2015-11-03 19:27:55.000000000 -0500 ++++ vmci-only.new/linux/driver.c 2016-03-16 21:30:47.646039829 -0400 +@@ -26,6 +26,9 @@ + + #include <linux/file.h> + #include <linux/fs.h> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++#include <linux/vmalloc.h> ++#endif + #include <linux/init.h> + #if defined(__x86_64__) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) + # include <linux/ioctl32.h> diff --git a/app-emulation/vmware-modules/files/304-4.2-02-vmnetInt.patch b/app-emulation/vmware-modules/files/304-4.2-02-vmnetInt.patch new file mode 100644 index 000000000000..11c76d0423e3 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-4.2-02-vmnetInt.patch @@ -0,0 +1,23 @@ +--- vmnet-only/vmnetInt.h.orig 2015-05-31 16:40:39.000000000 +0300 ++++ vmnet-only/vmnetInt.h 2015-09-28 01:22:01.553054142 +0300 +@@ -78,12 +78,16 @@ + + extern struct proto vmnet_proto; + #ifdef VMW_NETDEV_HAS_NET +-# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \ +- PF_NETLINK, _pri, &vmnet_proto) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \ ++ PF_NETLINK, _pri, &vmnet_proto, 1) + #else +-# define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1) ++# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \ ++ PF_NETLINK, _pri, &vmnet_proto) ++#endif ++#else ++# define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1) + #endif +- + + #ifdef NF_IP_LOCAL_IN + #define VMW_NF_INET_LOCAL_IN NF_IP_LOCAL_IN diff --git a/app-emulation/vmware-modules/files/304-4.2-02-vsock.patch b/app-emulation/vmware-modules/files/304-4.2-02-vsock.patch new file mode 100644 index 000000000000..bdac109e6c60 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-4.2-02-vsock.patch @@ -0,0 +1,77 @@ +diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c +--- vsock-only/linux/af_vsock.c 2016-03-16 21:31:24.582040320 -0400 ++++ vsock-only.new/linux/af_vsock.c 2016-03-16 21:37:22.140045067 -0400 +@@ -231,7 +231,16 @@ static int VSockVmciStreamSetsockopt(str + + static int VSockVmciStreamGetsockopt(struct socket *sock, int level, int optname, + char __user *optval, int __user * optlen); +- ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++static int VSockVmciDgramSendmsg( ++ struct socket *sock, struct msghdr *msg, size_t len); ++static int VSockVmciDgramRecvmsg(struct socket *sock, ++ struct msghdr *msg, size_t len, int flags); ++static int VSockVmciStreamSendmsg( ++ struct socket *sock, struct msghdr *msg, size_t len); ++static int VSockVmciStreamRecvmsg(struct socket *sock, ++ struct msghdr *msg, size_t len, int flags); ++#else + static int VSockVmciDgramSendmsg(struct kiocb *kiocb, + struct socket *sock, struct msghdr *msg, size_t len); + static int VSockVmciDgramRecvmsg(struct kiocb *kiocb, struct socket *sock, +@@ -240,6 +249,7 @@ static int VSockVmciStreamSendmsg(struct + struct socket *sock, struct msghdr *msg, size_t len); + static int VSockVmciStreamRecvmsg(struct kiocb *kiocb, struct socket *sock, + struct msghdr *msg, size_t len, int flags); ++#endif + + static int VSockVmciCreate( + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) +@@ -4210,7 +4220,11 @@ VSockVmciShutdown(struct socket *sock, + */ + + static int ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++VSockVmciDgramSendmsg( ++#else + VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED ++#endif + struct socket *sock, // IN: socket to send on + struct msghdr *msg, // IN: message to send + size_t len) // IN: length of message +@@ -4540,7 +4554,11 @@ VSockVmciStreamGetsockopt(struct socket + */ + + static int ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++VSockVmciStreamSendmsg( ++#else + VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED ++#endif + struct socket *sock, // IN: socket to send on + struct msghdr *msg, // IN: message to send + size_t len) // IN: length of message +@@ -4709,7 +4727,11 @@ out: + */ + + static int ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++VSockVmciDgramRecvmsg( ++#else + VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED ++#endif + struct socket *sock, // IN: socket to receive from + struct msghdr *msg, // IN/OUT: message to receive into + size_t len, // IN: length of receive buffer +@@ -4804,7 +4826,11 @@ out: + */ + + static int ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++VSockVmciStreamRecvmsg( ++#else + VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED ++#endif + struct socket *sock, // IN: socket to receive from + struct msghdr *msg, // IN/OUT: message to receive into + size_t len, // IN: length of receive buffer diff --git a/app-emulation/vmware-modules/files/304-4.2-03-af_vsock.patch b/app-emulation/vmware-modules/files/304-4.2-03-af_vsock.patch new file mode 100644 index 000000000000..6155df425972 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-4.2-03-af_vsock.patch @@ -0,0 +1,13 @@ +--- vsock-only/linux/af_vsock.c.orig 2015-09-28 01:26:51.354061029 +0300 ++++ vsock-only/linux/af_vsock.c 2015-09-28 01:25:11.196058649 +0300 +@@ -2826,7 +2826,9 @@ + * network namespace, and the option to zero the sock was dropped. + * + */ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++ sk = sk_alloc(net, vsockVmciFamilyOps.family, priority, &vsockVmciProto, 1); ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) + sk = sk_alloc(vsockVmciFamilyOps.family, priority, + vsockVmciProto.slab_obj_size, vsockVmciProto.slab); + #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24) diff --git a/app-emulation/vmware-modules/files/304-4.2-03-vsock.patch b/app-emulation/vmware-modules/files/304-4.2-03-vsock.patch new file mode 100644 index 000000000000..a2504a6a15e3 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-4.2-03-vsock.patch @@ -0,0 +1,14 @@ +diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c +--- vsock-only/linux/af_vsock.c 2016-03-16 21:38:01.401045589 -0400 ++++ vsock-only.new/linux/af_vsock.c 2016-03-16 21:39:32.529046799 -0400 +@@ -2836,7 +2836,9 @@ __VSockVmciCreate(struct net *net, + * network namespace, and the option to zero the sock was dropped. + * + */ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++ sk = sk_alloc(net, vsockVmciFamilyOps.family, priority, &vsockVmciProto, 1); ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) + sk = sk_alloc(vsockVmciFamilyOps.family, priority, + vsockVmciProto.slab_obj_size, vsockVmciProto.slab); + #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24) diff --git a/app-emulation/vmware-modules/files/304-4.2-04-driver.patch b/app-emulation/vmware-modules/files/304-4.2-04-driver.patch new file mode 100644 index 000000000000..237aa2297a3a --- /dev/null +++ b/app-emulation/vmware-modules/files/304-4.2-04-driver.patch @@ -0,0 +1,50 @@ +--- vmci-only/linux/driver.c.orig 2015-09-28 01:33:04.416069896 +0300 ++++ vmci-only/linux/driver.c 2015-09-28 01:34:32.814071997 +0300 +@@ -26,6 +26,7 @@ + + #include <linux/file.h> + #include <linux/fs.h> ++#include <linux/vmalloc.h> + #include <linux/init.h> + #if defined(__x86_64__) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) + # include <linux/ioctl32.h> +@@ -713,7 +714,7 @@ + + case IOCTL_VMCI_INIT_CONTEXT: { + VMCIInitBlock initBlock; +- VMCIHostUser user; ++ uid_t user; + + retval = copy_from_user(&initBlock, (void *)ioarg, sizeof initBlock); + if (retval != 0) { +@@ -736,7 +736,11 @@ + goto init_release; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) + user = current_uid(); ++#else ++ user = from_kuid(&init_user_ns, current_uid()); ++#endif + retval = VMCIContext_InitContext(initBlock.cid, initBlock.flags, + 0 /* Unused */, vmciLinux->userVersion, + &user, &vmciLinux->context); + +@@ -1683,7 +1684,7 @@ + /* This should be last to make sure we are done initializing. */ + retval = pci_register_driver(&vmci_driver); + if (retval < 0) { +- vfree(data_buffer); ++ kvfree(data_buffer); + data_buffer = NULL; + return retval; + } +@@ -2470,7 +2471,7 @@ + + if (guestDeviceInit) { + pci_unregister_driver(&vmci_driver); +- vfree(data_buffer); ++ kvfree(data_buffer); + guestDeviceInit = FALSE; + } + diff --git a/app-emulation/vmware-modules/files/304-4.3-00-misc_deregister.patch b/app-emulation/vmware-modules/files/304-4.3-00-misc_deregister.patch new file mode 100644 index 000000000000..32d960dfbcae --- /dev/null +++ b/app-emulation/vmware-modules/files/304-4.3-00-misc_deregister.patch @@ -0,0 +1,34 @@ +diff -rupN vmci-only/linux/driver.c vmci-only.new/linux/driver.c +--- vmci-only/linux/driver.c 2016-03-16 21:59:30.229062702 -0400 ++++ vmci-only.new/linux/driver.c 2016-03-16 21:58:35.452061974 -0400 +@@ -2469,7 +2469,9 @@ vmci_init(void) + static void __exit + vmci_exit(void) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) + int retval; ++#endif + + if (guestDeviceInit) { + pci_unregister_driver(&vmci_driver); + +diff -rupN vmci-only/linux/driver.c vmci-only.new/linux/driver.c +--- vmci-only/linux/driver.c 2016-03-16 21:53:24.184057841 -0400 ++++ vmci-only.new/linux/driver.c 2016-03-16 21:54:37.558058816 -0400 +@@ -2482,12 +2482,16 @@ vmci_exit(void) + + VMCI_HostCleanup(); + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++ misc_deregister(&linuxState.misc); ++#else + retval = misc_deregister(&linuxState.misc); + if (retval) { + Warning(LGPFX "Module %s: error unregistering\n", VMCI_MODULE_NAME); + } else { + Log(LGPFX"Module %s: unloaded\n", VMCI_MODULE_NAME); + } ++#endif + + hostDeviceInit = FALSE; + } diff --git a/app-emulation/vmware-modules/files/304-4.5-00-get_link.patch b/app-emulation/vmware-modules/files/304-4.5-00-get_link.patch new file mode 100644 index 000000000000..169fc71d9e22 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-4.5-00-get_link.patch @@ -0,0 +1,67 @@ +diff -rupN vmblock-only/linux/inode.c vmblock-only.new/linux/inode.c +--- vmblock-only/linux/inode.c 2016-03-16 22:22:00.470080630 -0400 ++++ vmblock-only.new/linux/inode.c 2016-03-16 22:23:33.016081859 -0400 +@@ -44,7 +44,9 @@ static struct dentry *InodeOpLookup(stru + static int InodeOpReadlink(struct dentry *, char __user *, int); + #endif + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) ++const char *InodeOpGetLink(struct dentry *dentry, struct inode *inode, struct delayed_call *done); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) + static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie); + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); +@@ -63,7 +65,11 @@ static struct inode_operations LinkInode + struct inode_operations LinkInodeOps = { + #endif + .readlink = InodeOpReadlink, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) ++ .get_link = InodeOpGetLink, ++#else + .follow_link = InodeOpFollowlink, ++#endif + }; + + /* +@@ -222,7 +228,9 @@ InodeOpReadlink(struct dentry *dentry, + * + *---------------------------------------------------------------------------- + */ +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) ++const char *InodeOpGetLink(struct dentry *dentry, struct inode *inode, struct delayed_call *done) ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) + static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie) + #else + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) +@@ -238,18 +246,28 @@ InodeOpFollowlink(struct dentry *dentry, + VMBlockInodeInfo *iinfo; + + if (!dentry) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) ++ ret = -ECHILD; ++#else + Warning("InodeOpReadlink: invalid args from kernel\n"); + ret = -EINVAL; ++#endif + goto out; + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) ++ iinfo = INODE_TO_IINFO(inode); ++#else + iinfo = INODE_TO_IINFO(dentry->d_inode); ++#endif + if (!iinfo) { + ret = -EINVAL; + goto out; + } + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) ++ return (char *)(iinfo->name); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) + return *cookie = (char *)(iinfo->name); + #else + nd_set_link(nd, iinfo->name); diff --git a/app-emulation/vmware-modules/files/304-apic.patch b/app-emulation/vmware-modules/files/304-apic.patch new file mode 100644 index 000000000000..66cd45933246 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-apic.patch @@ -0,0 +1,12 @@ +diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c +index f1f4b10..c43242f 100644 +--- a/vmmon-only/linux/hostif.c ++++ b/vmmon-only/linux/hostif.c +@@ -55,6 +55,7 @@ + #include <linux/kthread.h> + #include <linux/wait.h> + ++#include <asm/apic.h> + + #include "vmware.h" + #include "x86apic.h" diff --git a/app-emulation/vmware-modules/files/304-hardened.patch b/app-emulation/vmware-modules/files/304-hardened.patch new file mode 100644 index 000000000000..cc3e04152877 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-hardened.patch @@ -0,0 +1,113 @@ +diff --git a/vmmon-only/linux/driver.c b/vmmon-only/linux/driver.c +index b21dd44..960c2aa 100644 +--- a/vmmon-only/linux/driver.c ++++ b/vmmon-only/linux/driver.c +@@ -178,7 +178,22 @@ static struct vm_operations_struct vmuser_mops = { + #endif + }; + +-static struct file_operations vmuser_fops; ++static struct file_operations vmuser_fops = { ++ .owner = THIS_MODULE, ++ .poll = LinuxDriverPoll, ++#ifdef HAVE_UNLOCKED_IOCTL ++ .unlocked_ioctl = LinuxDriver_UnlockedIoctl, ++#else ++ .ioctl = LinuxDriver_Ioctl, ++#endif ++#ifdef HAVE_COMPAT_IOCTL ++ .compat_ioctl = LinuxDriver_UnlockedIoctl, ++#endif ++ .open = LinuxDriver_Open, ++ .release = LinuxDriver_Close, ++ .mmap = LinuxDriverMmap ++}; ++ + static struct timer_list tscTimer; + + /* +@@ -357,27 +372,6 @@ init_module(void) + spin_lock_init(&linuxState.pollListLock); + #endif + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vmuser_fops, 0, sizeof vmuser_fops); +- vmuser_fops.owner = THIS_MODULE; +- vmuser_fops.poll = LinuxDriverPoll; +-#ifdef HAVE_UNLOCKED_IOCTL +- vmuser_fops.unlocked_ioctl = LinuxDriver_UnlockedIoctl; +-#else +- vmuser_fops.ioctl = LinuxDriver_Ioctl; +-#endif +-#ifdef HAVE_COMPAT_IOCTL +- vmuser_fops.compat_ioctl = LinuxDriver_UnlockedIoctl; +-#endif +- vmuser_fops.open = LinuxDriver_Open; +- vmuser_fops.release = LinuxDriver_Close; +- vmuser_fops.mmap = LinuxDriverMmap; +- + #ifdef VMX86_DEVEL + devel_init_module(); + linuxState.minor = 0; +diff --git a/vmnet-only/driver.c b/vmnet-only/driver.c +index b12b982..40bd4cf 100644 +--- a/vmnet-only/driver.c ++++ b/vmnet-only/driver.c +@@ -165,7 +165,22 @@ static long VNetFileOpUnlockedIoctl(struct file * filp, + unsigned int iocmd, unsigned long ioarg); + #endif + +-static struct file_operations vnetFileOps; ++static struct file_operations vnetFileOps = { ++ .owner = THIS_MODULE, ++ .read = VNetFileOpRead, ++ .write = VNetFileOpWrite, ++ .poll = VNetFileOpPoll, ++#ifdef HAVE_UNLOCKED_IOCTL ++ .unlocked_ioctl = VNetFileOpUnlockedIoctl, ++#else ++ .ioctl = VNetFileOpIoctl, ++#endif ++#ifdef HAVE_COMPAT_IOCTL ++ .compat_ioctl = VNetFileOpUnlockedIoctl, ++#endif ++ .open = VNetFileOpOpen, ++ .release = VNetFileOpClose ++}; + + /* + * Utility functions +@@ -476,28 +491,6 @@ init_module(void) + goto err_proto; + } + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vnetFileOps, 0, sizeof vnetFileOps); +- vnetFileOps.owner = THIS_MODULE; +- vnetFileOps.read = VNetFileOpRead; +- vnetFileOps.write = VNetFileOpWrite; +- vnetFileOps.poll = VNetFileOpPoll; +-#ifdef HAVE_UNLOCKED_IOCTL +- vnetFileOps.unlocked_ioctl = VNetFileOpUnlockedIoctl; +-#else +- vnetFileOps.ioctl = VNetFileOpIoctl; +-#endif +-#ifdef HAVE_COMPAT_IOCTL +- vnetFileOps.compat_ioctl = VNetFileOpUnlockedIoctl; +-#endif +- vnetFileOps.open = VNetFileOpOpen; +- vnetFileOps.release = VNetFileOpClose; +- + retval = register_chrdev(VNET_MAJOR_NUMBER, "vmnet", &vnetFileOps); + if (retval) { + LOG(0, (KERN_NOTICE "/dev/vmnet: could not register major device %d\n", diff --git a/app-emulation/vmware-modules/files/304-makefile-include.patch b/app-emulation/vmware-modules/files/304-makefile-include.patch new file mode 100644 index 000000000000..39c300030805 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-makefile-include.patch @@ -0,0 +1,65 @@ +diff --git a/vmblock-only/Makefile.kernel b/vmblock-only/Makefile.kernel +index ab7a727..e3ec9d2 100644 +--- a/vmblock-only/Makefile.kernel ++++ b/vmblock-only/Makefile.kernel +@@ -19,7 +19,7 @@ + + INCLUDE += -I$(SRCROOT)/include + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachecreate.c, -DVMW_KMEMCR_HAS_DTOR, ) + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachector.c, -DVMW_KMEMCR_CTOR_HAS_3_ARGS, ) +diff --git a/vmci-only/Makefile.kernel b/vmci-only/Makefile.kernel +index ba343ee..861ea83 100644 +--- a/vmci-only/Makefile.kernel ++++ b/vmci-only/Makefile.kernel +@@ -21,7 +21,7 @@ CC_OPTS += -DVMCI + + INCLUDE += -I$(SRCROOT)/shared -I$(SRCROOT)/common -I$(SRCROOT)/linux + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + obj-m += $(DRIVER).o + +diff --git a/vmmon-only/Makefile.kernel b/vmmon-only/Makefile.kernel +index 8770d1d..c4746c3 100644 +--- a/vmmon-only/Makefile.kernel ++++ b/vmmon-only/Makefile.kernel +@@ -22,7 +22,7 @@ CC_OPTS += -DVMMON -DVMCORE + INCLUDE := -I$(SRCROOT)/include -I$(SRCROOT)/common -I$(SRCROOT)/linux \ + -I$(SRCROOT)/vmcore + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/smpcall.c, -DVMW_HAVE_SMP_CALL_3ARG, ) + +diff --git a/vmnet-only/Makefile.kernel b/vmnet-only/Makefile.kernel +index d1e3133..665d428 100644 +--- a/vmnet-only/Makefile.kernel ++++ b/vmnet-only/Makefile.kernel +@@ -19,7 +19,7 @@ + + INCLUDE := -I$(SRCROOT) + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_net.c,-DVMW_NETDEV_HAS_NET, ) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_dev_net.c,-DVMW_NETDEV_HAS_DEV_NET, ) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/nfhook_uses_skb.c,-DVMW_NFHOOK_USES_SKB, ) +diff --git a/vsock-only/Makefile.kernel b/vsock-only/Makefile.kernel +index b4629ee..264b8cb 100644 +--- a/vsock-only/Makefile.kernel ++++ b/vsock-only/Makefile.kernel +@@ -25,7 +25,7 @@ INCLUDE += -I$(SRCROOT)/include + INCLUDE += -I$(SRCROOT)/linux + INCLUDE += -I$(SRCROOT)/common + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/netcreate_num_params.c, -DVMW_NETCREATE_KERNARG, ) + + diff --git a/app-emulation/vmware-modules/files/304-makefile-kernel-dir.patch b/app-emulation/vmware-modules/files/304-makefile-kernel-dir.patch new file mode 100644 index 000000000000..1a647a3302d8 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-makefile-kernel-dir.patch @@ -0,0 +1,85 @@ +diff --git a/vmblock-only/Makefile b/vmblock-only/Makefile +index 2b81323..746c8b8 100644 +--- a/vmblock-only/Makefile ++++ b/vmblock-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmblock + PRODUCT := ws +diff --git a/vmci-only/Makefile b/vmci-only/Makefile +index 8e9c5be..6ec828b 100644 +--- a/vmci-only/Makefile ++++ b/vmci-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmci + PRODUCT := ws +diff --git a/vmmon-only/Makefile b/vmmon-only/Makefile +index 5bd867b..91a83d4 100644 +--- a/vmmon-only/Makefile ++++ b/vmmon-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmmon + PRODUCT := @@PRODUCT@@ +diff --git a/vmnet-only/Makefile b/vmnet-only/Makefile +index d4eb73c..c7c6d38 100644 +--- a/vmnet-only/Makefile ++++ b/vmnet-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmnet + PRODUCT := @@PRODUCT@@ +diff --git a/vsock-only/Makefile b/vsock-only/Makefile +index 93dd61d..9765696 100644 +--- a/vsock-only/Makefile ++++ b/vsock-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vsock + PRODUCT := ws diff --git a/app-emulation/vmware-modules/files/304-netdevice.patch b/app-emulation/vmware-modules/files/304-netdevice.patch new file mode 100644 index 000000000000..35231a3205e3 --- /dev/null +++ b/app-emulation/vmware-modules/files/304-netdevice.patch @@ -0,0 +1,24 @@ +diff --git a/vmnet-only/compat_netdevice.h b/vmnet-only/compat_netdevice.h +index 7a56304..9ff4548 100644 +--- a/vmnet-only/compat_netdevice.h ++++ b/vmnet-only/compat_netdevice.h +@@ -47,6 +47,19 @@ + # define net_device device + #endif + ++/* it looks like these have been removed from the kernel 3.1 ++ * probably because the "transition" is considered complete. ++ * so to keep this source compatible we just redefine them like they were ++ * previously ++ */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0) ++#define HAVE_ALLOC_NETDEV /* feature macro: alloc_xxxdev ++ functions are available. */ ++#define HAVE_FREE_NETDEV /* free_netdev() */ ++#define HAVE_NETDEV_PRIV /* netdev_priv() */ ++#define HAVE_NETIF_QUEUE ++#define HAVE_NET_DEVICE_OPS ++#endif + + /* + * SET_MODULE_OWNER appeared sometime during 2.3.x. It was setting diff --git a/app-emulation/vmware-modules/files/308-3.10-00-dentry.patch b/app-emulation/vmware-modules/files/308-3.10-00-dentry.patch new file mode 100644 index 000000000000..5cc445fcadf9 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.10-00-dentry.patch @@ -0,0 +1,43 @@ +Minor change the API, now it just gets passed flags instead of a pointer to the nameidata +--- a/vmblock-only/linux/dentry.c 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmblock-only/linux/dentry.c 2015-02-24 03:58:06.038605919 +0300 +@@ -32,7 +32,11 @@ + #include "block.h" + + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) + static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd); ++#else ++static int DentryOpRevalidate(struct dentry *dentry, unsigned int); ++#endif + + struct dentry_operations LinkDentryOps = { + .d_revalidate = DentryOpRevalidate, +@@ -58,9 +62,12 @@ + *---------------------------------------------------------------------------- + */ + +-static int +-DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating +- struct nameidata *nd) // IN: lookup flags & intent ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) ++static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd) ++#else ++static int DentryOpRevalidate(struct dentry *dentry, unsigned int flags) ++#endif ++ + { + VMBlockInodeInfo *iinfo; + struct nameidata actualNd; +@@ -101,7 +108,11 @@ + if (actualDentry && + actualDentry->d_op && + actualDentry->d_op->d_revalidate) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) ++ return actualDentry->d_op->d_revalidate(actualDentry, flags); ++#else + return actualDentry->d_op->d_revalidate(actualDentry, nd); ++#endif + } + + if (compat_path_lookup(iinfo->name, 0, &actualNd)) { diff --git a/app-emulation/vmware-modules/files/308-3.10-01-inode.patch b/app-emulation/vmware-modules/files/308-3.10-01-inode.patch new file mode 100644 index 000000000000..e12d84d10e7b --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.10-01-inode.patch @@ -0,0 +1,94 @@ +Minor change the API, now it just gets passed flags instead of a pointer to the nameidata +Properly initializes UID/GID with repsect to namespaces +Some changes the readlink/setlink APIs +--- a/vmblock-only/linux/inode.c 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmblock-only/linux/inode.c 2015-02-24 03:58:06.039605762 +0300 +@@ -35,9 +35,15 @@ + + + /* Inode operations */ +-static struct dentry *InodeOpLookup(struct inode *dir, +- struct dentry *dentry, struct nameidata *nd); ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) ++static struct dentry *InodeOpLookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd); + static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); ++#else ++static struct dentry *InodeOpLookup(struct inode *, struct dentry *, unsigned int); ++static int InodeOpReadlink(struct dentry *, char __user *, int); ++#endif ++ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); + #else +@@ -49,12 +55,15 @@ + .lookup = InodeOpLookup, + }; + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) + static struct inode_operations LinkInodeOps = { ++#else ++struct inode_operations LinkInodeOps = { ++#endif + .readlink = InodeOpReadlink, + .follow_link = InodeOpFollowlink, + }; + +- + /* + *---------------------------------------------------------------------------- + * +@@ -75,7 +84,11 @@ + static struct dentry * + InodeOpLookup(struct inode *dir, // IN: parent directory's inode + struct dentry *dentry, // IN: dentry to lookup +- struct nameidata *nd) // IN: lookup intent and information ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) ++ struct nameidata *nd) // IN: lookup intent and information ++#else ++ unsigned int flags) ++#endif + { + char *filename; + struct inode *inode; +@@ -135,7 +148,12 @@ + inode->i_size = INODE_TO_IINFO(inode)->nameLen; + inode->i_version = 1; + inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) + inode->i_uid = inode->i_gid = 0; ++#else ++ inode->i_gid = make_kgid(current_user_ns(), 0); ++ inode->i_uid = make_kuid(current_user_ns(), 0); ++#endif + inode->i_op = &LinkInodeOps; + + d_add(dentry, inode); +@@ -177,7 +195,12 @@ + return -EINVAL; + } + +- return vfs_readlink(dentry, buffer, buflen, iinfo->name); ++#if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 14, 99) ++ return vfs_readlink(dentry, buffer, buflen, iinfo->name); ++#else ++ return readlink_copy(buffer, buflen, iinfo->name); ++#endif ++ + } + + +@@ -221,7 +244,7 @@ + goto out; + } + +- ret = vfs_follow_link(nd, iinfo->name); ++ nd_set_link(nd, iinfo->name); + + out: + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) +@@ -230,3 +253,4 @@ + return ret; + #endif + } ++ diff --git a/app-emulation/vmware-modules/files/308-3.10-02-control.patch b/app-emulation/vmware-modules/files/308-3.10-02-control.patch new file mode 100644 index 000000000000..928835337511 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.10-02-control.patch @@ -0,0 +1,57 @@ +The API to create proc entries now takes the file ops structure directly, instead of being set after the fact +Using new __getname/__putname API +--- a/vmblock-only/linux/control.c 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmblock-only/linux/control.c 2015-02-24 03:58:06.038605919 +0300 +@@ -208,9 +208,11 @@ + VMBlockSetProcEntryOwner(controlProcMountpoint); + + /* Create /proc/fs/vmblock/dev */ +- controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME, +- VMBLOCK_CONTROL_MODE, +- controlProcDirEntry); ++ controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, ++ VMBLOCK_CONTROL_MODE, ++ controlProcDirEntry, ++ &ControlFileOps); ++ + if (!controlProcEntry) { + Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n"); + remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry); +@@ -218,7 +220,10 @@ + return -EINVAL; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) + controlProcEntry->proc_fops = &ControlFileOps; ++#endif ++ + return 0; + } + +@@ -287,18 +287,24 @@ ExecuteBlockOp(const char __user *buf, + int i; + int retval; + +- name = getname(buf); ++ name = __getname(); + if (IS_ERR(name)) { + return PTR_ERR(name); + } + ++ i = strncpy_from_user(name, buf, PATH_MAX); ++ if (i < 0 || i == PATH_MAX) { ++ __putname(name); ++ return -EINVAL; ++ } ++ + for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) { + name[i] = '\0'; + } + + retval = i < 0 ? -EINVAL : blockOp(name, blocker); + +- putname(name); ++ __putname(name); + + return retval; + } diff --git a/app-emulation/vmware-modules/files/308-3.10-03-inline.patch b/app-emulation/vmware-modules/files/308-3.10-03-inline.patch new file mode 100644 index 000000000000..fa8f36a35c29 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.10-03-inline.patch @@ -0,0 +1,14 @@ +Hushes a warning +--- a/vmmon-only/linux/driver.c 2015-02-07 03:54:16.000000000 +0300 ++++ c/vmmon-only/linux/driver.c 2015-02-24 03:58:06.042605293 +0300 +@@ -1328,7 +1328,9 @@ + *----------------------------------------------------------------------------- + */ + +-__attribute__((always_inline)) static Bool ++#include <linux/compiler-gcc.h> ++ ++__always_inline static Bool + LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min + { + TSCDelta tscDelta; diff --git a/app-emulation/vmware-modules/files/308-3.11-00-readdir.patch b/app-emulation/vmware-modules/files/308-3.11-00-readdir.patch new file mode 100644 index 000000000000..b2f76d3e2b30 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.11-00-readdir.patch @@ -0,0 +1,41 @@ +replaces usage of vfs_readdir with iterate_dir. origionally found here: +https://bugs.gentoo.org/show_bug.cgi?id=508204 + +diff -Naur vmblock-only/linux/file.c vmblock-only/linux/file.c +--- vmblock-only/linux/file.c 2013-11-05 23:33:26.000000000 -0500 ++++ vmblock-only/linux/file.c 2014-04-26 10:58:03.062635343 -0400 +@@ -166,11 +166,9 @@ + + static int + FileOpReaddir(struct file *file, // IN +- void *dirent, // IN +- filldir_t filldir) // IN ++ struct dir_context *ctx) + { + int ret; +- FilldirInfo info; + struct file *actualFile; + + if (!file) { +@@ -184,11 +182,8 @@ + return -EINVAL; + } + +- info.filldir = filldir; +- info.dirent = dirent; +- + actualFile->f_pos = file->f_pos; +- ret = vfs_readdir(actualFile, Filldir, &info); ++ ret = iterate_dir(actualFile, ctx); + file->f_pos = actualFile->f_pos; + + return ret; +@@ -237,7 +232,7 @@ + + + struct file_operations RootFileOps = { +- .readdir = FileOpReaddir, ++ .iterate = FileOpReaddir, + .open = FileOpOpen, + .release = FileOpRelease, + }; diff --git a/app-emulation/vmware-modules/files/308-3.11-01-filldir.patch b/app-emulation/vmware-modules/files/308-3.11-01-filldir.patch new file mode 100644 index 000000000000..2eec99b7c1f8 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.11-01-filldir.patch @@ -0,0 +1,53 @@ +simply remove the code for Filldir since it is no longer used with the new +iterate_dir API + +diff -rupN vmblock-only/linux/file.c vmblock-only.new/linux/file.c +--- vmblock-only/linux/file.c 2014-10-07 23:22:46.832469618 -0400 ++++ vmblock-only.new/linux/file.c 2014-10-07 23:24:35.276472720 -0400 +@@ -38,46 +38,6 @@ typedef u64 inode_num_t; + typedef ino_t inode_num_t; + #endif + +-/* Specifically for our filldir_t callback */ +-typedef struct FilldirInfo { +- filldir_t filldir; +- void *dirent; +-} FilldirInfo; +- +- +-/* +- *---------------------------------------------------------------------------- +- * +- * Filldir -- +- * +- * Callback function for readdir that we use in place of the one provided. +- * This allows us to specify that each dentry is a symlink, but pass through +- * everything else to the original filldir function. +- * +- * Results: +- * Original filldir's return value. +- * +- * Side effects: +- * Directory information gets copied to user's buffer. +- * +- *---------------------------------------------------------------------------- +- */ +- +-static int +-Filldir(void *buf, // IN: Dirent buffer passed from FileOpReaddir +- const char *name, // IN: Dirent name +- int namelen, // IN: len of dirent's name +- loff_t offset, // IN: Offset +- inode_num_t ino, // IN: Inode number of dirent +- unsigned int d_type) // IN: Type of file +-{ +- FilldirInfo *info = buf; +- +- /* Specify DT_LNK regardless */ +- return info->filldir(info->dirent, name, namelen, offset, ino, DT_LNK); +-} +- +- + /* File operations */ + + /* diff --git a/app-emulation/vmware-modules/files/308-3.15-00-vsock.patch b/app-emulation/vmware-modules/files/308-3.15-00-vsock.patch new file mode 100644 index 000000000000..9e8d9d1a32f7 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.15-00-vsock.patch @@ -0,0 +1,46 @@ +removing the no longer existing second parameter to sk_data_ready +doesn't seem it ever served a purpose. + +diff -rupN vsock-only/linux/notify.c vsock-only.new/linux/notify.c +--- vsock-only/linux/notify.c 2013-11-05 23:33:27.000000000 -0500 ++++ vsock-only.new/linux/notify.c 2014-10-05 23:46:47.943304728 -0400 +@@ -515,8 +515,11 @@ VSockVmciHandleWrote(struct sock *sk, + vsk = vsock_sk(sk); + PKT_FIELD(vsk, sentWaitingRead) = FALSE; + #endif +- ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + +diff -rupN vsock-only/linux/notifyQState.c vsock-only.new/linux/notifyQState.c +--- vsock-only/linux/notifyQState.c 2013-11-05 23:33:27.000000000 -0500 ++++ vsock-only.new/linux/notifyQState.c 2014-10-05 23:46:33.231303931 -0400 +@@ -164,7 +164,11 @@ VSockVmciHandleWrote(struct sock *sk, + struct sockaddr_vm *dst, // IN: unused + struct sockaddr_vm *src) // IN: unused + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + +@@ -566,7 +570,11 @@ VSockVmciNotifyPktRecvPostDequeue(struct + } + + /* See the comment in VSockVmciNotifyPktSendPostEnqueue */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ sk->sk_data_ready(sk); ++#else + sk->sk_data_ready(sk, 0); ++#endif + } + + return err; diff --git a/app-emulation/vmware-modules/files/308-3.18-00-version-redefined.patch b/app-emulation/vmware-modules/files/308-3.18-00-version-redefined.patch new file mode 100644 index 000000000000..22d6325c9a90 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.18-00-version-redefined.patch @@ -0,0 +1,25 @@ +Hushes some (but not all warnings) relating to redefinitions of this define +--- a/vmci-only/shared/vm_device_version.h 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmci-only/shared/vm_device_version.h 2015-02-24 03:58:06.041605450 +0300 +@@ -53,7 +53,9 @@ + * VMware HD Audio codec + * VMware HD Audio controller + */ ++#ifndef PCI_VENDOR_ID_VMWARE + #define PCI_VENDOR_ID_VMWARE 0x15AD ++#endif + #define PCI_DEVICE_ID_VMWARE_SVGA2 0x0405 + #define PCI_DEVICE_ID_VMWARE_SVGA 0x0710 + #define PCI_DEVICE_ID_VMWARE_VGA 0x0711 +--- a/vmnet-only/vm_device_version.h 2015-02-07 03:54:16.000000000 +0300 ++++ c/vmnet-only/vm_device_version.h 2015-02-24 03:58:06.044604981 +0300 +@@ -53,7 +53,9 @@ + * VMware HD Audio codec + * VMware HD Audio controller + */ ++#ifndef PCI_VENDOR_ID_VMWARE + #define PCI_VENDOR_ID_VMWARE 0x15AD ++#endif + #define PCI_DEVICE_ID_VMWARE_SVGA2 0x0405 + #define PCI_DEVICE_ID_VMWARE_SVGA 0x0710 + #define PCI_DEVICE_ID_VMWARE_VGA 0x0711 diff --git a/app-emulation/vmware-modules/files/308-3.19-00-compat-namei.patch b/app-emulation/vmware-modules/files/308-3.19-00-compat-namei.patch new file mode 100644 index 000000000000..0182077254a1 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.19-00-compat-namei.patch @@ -0,0 +1,24 @@ +A copy of this since it is no longer exported by the kernel headers +--- a/vmblock-only/shared/compat_namei.h 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmblock-only/shared/compat_namei.h 2015-02-24 03:51:25.235286047 +0300 +@@ -21,6 +21,20 @@ + + #include <linux/namei.h> + ++/* Copy-n-paste from kernel's source/fs/namei.c */ ++struct nameidata { ++ struct path path; ++ struct qstr last; ++ struct path root; ++ struct inode *inode; /* path.dentry.d_inode */ ++ unsigned int flags; ++ unsigned seq, m_seq; ++ int last_type; ++ unsigned depth; ++ struct file *base; ++ char *saved_names[MAX_NESTED_LINKS + 1]; ++}; ++ + /* + * In 2.6.25-rc2, dentry and mount objects were removed from the nameidata + * struct. They were both replaced with a struct path. diff --git a/app-emulation/vmware-modules/files/308-3.19-02-vmblock-path.patch b/app-emulation/vmware-modules/files/308-3.19-02-vmblock-path.patch new file mode 100644 index 000000000000..178d1478ae59 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.19-02-vmblock-path.patch @@ -0,0 +1,67 @@ +Sources: +https://531682.bugs.gentoo.org/attachment.cgi?id=396484 +https://531682.bugs.gentoo.org/attachment.cgi?id=396482 +diff -rupN vmblock-only.orig/linux/dentry.c vmblock-only/linux/dentry.c +--- vmblock-only.orig/linux/dentry.c 2015-02-14 18:05:46.000000000 -0500 ++++ vmblock-only/linux/dentry.c 2015-02-14 18:09:59.000000000 -0500 +@@ -63,7 +63,7 @@ DentryOpRevalidate(struct dentry *dentry + unsigned int flags) // IN: lookup flags & intent + { + VMBlockInodeInfo *iinfo; +- struct nameidata actualNd; ++ struct path actualNd; + struct dentry *actualDentry; + int ret; + +diff -rupN vmblock-only.orig/linux/filesystem.c vmblock-only/linux/filesystem.c +--- vmblock-only.orig/linux/filesystem.c 2014-11-20 19:29:15.000000000 -0500 ++++ vmblock-only/linux/filesystem.c 2015-02-14 18:10:49.000000000 -0500 +@@ -322,7 +322,7 @@ Iget(struct super_block *sb, // IN: f + { + VMBlockInodeInfo *iinfo; + struct inode *inode; +- struct nameidata actualNd; ++ struct path actualNd; + + ASSERT(sb); + +diff -rupN vmblock-only.orig/shared/compat_namei.h vmblock-only/shared/compat_namei.h +--- vmblock-only.orig/shared/compat_namei.h 2014-11-20 19:29:15.000000000 -0500 ++++ vmblock-only/shared/compat_namei.h 2015-02-14 18:08:38.000000000 -0500 +@@ -26,21 +26,21 @@ + * struct. They were both replaced with a struct path. + */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +-#define compat_vmw_nd_to_dentry(nd) (nd).path.dentry ++#define compat_vmw_nd_to_dentry(nd) (nd).dentry + #else + #define compat_vmw_nd_to_dentry(nd) (nd).dentry + #endif + + /* In 2.6.25-rc2, path_release(&nd) was replaced with path_put(&nd.path). */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +-#define compat_path_release(nd) path_put(&(nd)->path) ++#define compat_path_release(nd) path_put(nd) + #else + #define compat_path_release(nd) path_release(nd) + #endif + + /* path_lookup was removed in 2.6.39 merge window VFS merge */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) +-#define compat_path_lookup(name, flags, nd) kern_path(name, flags, &((nd)->path)) ++#define compat_path_lookup(name, flags, nd) kern_path(name, flags, nd) + #else + #define compat_path_lookup(name, flags, nd) path_lookup(name, flags, nd) + #endif +diff -u vmblock-only.orig/linux/file.c vmblock-only/linux/file.c +--- vmblock-only.orig/linux/file.c 2015-02-11 12:18:29.000000000 -0500 ++++ vmblock-only/linux/file.c 2015-02-11 12:41:41.000000000 -0500 +@@ -92,7 +92,7 @@ + * and that would try to acquire the inode's semaphore; if the two inodes + * are the same we'll deadlock. + */ +- if (actualFile->f_dentry && inode == actualFile->f_dentry->d_inode) { ++ if (actualFile->f_path.dentry && inode == actualFile->f_path.dentry->d_inode) { + Warning("FileOpOpen: identical inode encountered, open cannot succeed.\n"); + if (filp_close(actualFile, current->files) < 0) { + Warning("FileOpOpen: unable to close opened file.\n"); diff --git a/app-emulation/vmware-modules/files/308-3.19-04-iovec.patch b/app-emulation/vmware-modules/files/308-3.19-04-iovec.patch new file mode 100644 index 000000000000..83f0cc8fcbbf --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.19-04-iovec.patch @@ -0,0 +1,59 @@ +Some parts of the iovec API were replaced by the similar message API. Refactoring the code to use that. +--- a/vmci-only/linux/vmciKernelIf.c 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmci-only/linux/vmciKernelIf.c 2015-02-24 03:58:06.041605450 +0300 +@@ -40,6 +40,7 @@ + #include <linux/socket.h> /* For memcpy_{to,from}iovec(). */ + #include <linux/vmalloc.h> + #include <linux/wait.h> ++#include <linux/skbuff.h> + + #include "compat_highmem.h" + #include "compat_interrupt.h" +@@ -1196,21 +1197,21 @@ + } else { + toCopy = size - bytesCopied; + } +- ++ /* Code cloned from kernels drivers/misc/vmw_vmci/vmci_queue_pair.c */ + if (isIovec) { +- struct iovec *iov = (struct iovec *)src; +- int err; ++ struct msghdr *msg = (struct msghdr *)src; ++ int err; + +- /* The iovec will track bytesCopied internally. */ +- err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy); +- if (err != 0) { +- if (kernelIf->host) { +- kunmap(kernelIf->u.h.page[pageIndex]); ++ /* The iovec will track bytes_copied internally. */ ++ err = memcpy_from_msg((u8 *)va + pageOffset, msg, toCopy); ++ if (err != 0) { ++ if (kernelIf->host) ++ kunmap(kernelIf->u.h.page[pageIndex]); ++ return VMCI_ERROR_INVALID_ARGS; + } +- return VMCI_ERROR_INVALID_ARGS; +- } +- } else { +- memcpy((uint8 *)va + pageOffset, (uint8 *)src + bytesCopied, toCopy); ++ } else { ++ memcpy((u8 *)va + pageOffset, ++ (u8 *)src + bytesCopied, toCopy); + } + + bytesCopied += toCopy; +@@ -1273,11 +1274,11 @@ + } + + if (isIovec) { +- struct iovec *iov = (struct iovec *)dest; ++ struct msghdr *msg = (struct msghdr *)dest; + int err; + + /* The iovec will track bytesCopied internally. */ +- err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy); ++ err = memcpy_to_msg(msg, (uint8 *)va + pageOffset, toCopy); + if (err != 0) { + if (kernelIf->host) { + kunmap(kernelIf->u.h.page[pageIndex]); diff --git a/app-emulation/vmware-modules/files/308-3.19-05-vmci_qpair.patch b/app-emulation/vmware-modules/files/308-3.19-05-vmci_qpair.patch new file mode 100644 index 000000000000..4dec3c468206 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.19-05-vmci_qpair.patch @@ -0,0 +1,25 @@ +Some parts of the iovec API were replaced by the similar message API. Refactoring the code to use that. +diff -rupN vsock-only.old/linux/af_vsock.c vsock-only/linux/af_vsock.c +--- vsock-only.old/linux/af_vsock.c 2015-05-06 20:41:47.684046762 -0400 ++++ vsock-only/linux/af_vsock.c 2015-05-06 20:52:15.245080779 -0400 +@@ -4629,7 +4629,7 @@ VSockVmciStreamSendmsg(struct kiocb *kio + * able to send. + */ + +- written = vmci_qpair_enquev(vsk->qpair, msg->msg_iov, ++ written = vmci_qpair_enquev(vsk->qpair, &msg->msg_iter.iov, + len - totalWritten, 0); + if (written < 0) { + err = -ENOMEM; +@@ -4874,9 +4874,9 @@ VSockVmciStreamRecvmsg(struct kiocb *kio + } + + if (flags & MSG_PEEK) { +- read = vmci_qpair_peekv(vsk->qpair, msg->msg_iov, len - copied, 0); ++ read = vmci_qpair_peekv(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); + } else { +- read = vmci_qpair_dequev(vsk->qpair, msg->msg_iov, len - copied, 0); ++ read = vmci_qpair_dequev(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); + } + + if (read < 0) { diff --git a/app-emulation/vmware-modules/files/308-3.19-06-vsock.patch b/app-emulation/vmware-modules/files/308-3.19-06-vsock.patch new file mode 100644 index 000000000000..9a2096e679a4 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.19-06-vsock.patch @@ -0,0 +1,16 @@ +Some parts of the iovec API were replaced by the similar message API. Refactoring the code to use that. +diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c +--- vsock-only/linux/af_vsock.c 2015-05-05 11:31:35.710099711 -0400 ++++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:36:33.260115840 -0400 +@@ -4727,7 +4727,11 @@ VSockVmciDgramRecvmsg(struct kiocb *kioc + } + + /* Place the datagram payload in the user's iovec. */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) + err = skb_copy_datagram_iovec(skb, sizeof *dg, msg->msg_iov, payloadLen); ++#else ++ err = skb_copy_datagram_iter(skb, sizeof *dg, &msg->msg_iter, payloadLen); ++#endif + if (err) { + goto out; + } diff --git a/app-emulation/vmware-modules/files/308-3.19-07-vsock.patch b/app-emulation/vmware-modules/files/308-3.19-07-vsock.patch new file mode 100644 index 000000000000..6aec2cd3d7b5 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-3.19-07-vsock.patch @@ -0,0 +1,13 @@ +Some parts of the iovec API were replaced by the similar message API. Refactoring the code to use that. +diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c +--- vsock-only/linux/af_vsock.c 2015-05-05 11:26:05.145081792 -0400 ++++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:30:54.304097466 -0400 +@@ -4266,7 +4266,7 @@ VSockVmciDgramSendmsg(struct kiocb *kioc + goto out; + } + +- memcpy_fromiovec(VMCI_DG_PAYLOAD(dg), msg->msg_iov, len); ++ memcpy_from_msg(VMCI_DG_PAYLOAD(dg), msg, len); + + dg->dst = VMCI_MAKE_HANDLE(remoteAddr->svm_cid, remoteAddr->svm_port); + dg->src = VMCI_MAKE_HANDLE(vsk->localAddr.svm_cid, vsk->localAddr.svm_port); diff --git a/app-emulation/vmware-modules/files/308-4.01-00-vsock.patch b/app-emulation/vmware-modules/files/308-4.01-00-vsock.patch new file mode 100644 index 000000000000..5735cd50650e --- /dev/null +++ b/app-emulation/vmware-modules/files/308-4.01-00-vsock.patch @@ -0,0 +1,61 @@ +--- vsock-only/linux/af_vsock.c 2015-05-03 00:55:58.955156116 +0200 ++++ vsock-only/linux/af_vsock.c.new 2015-05-03 01:01:14.305173750 +0200 +@@ -233,14 +233,10 @@ + static int VSockVmciStreamGetsockopt(struct socket *sock, int level, int optname, + char __user *optval, int __user * optlen); + +-static int VSockVmciDgramSendmsg(struct kiocb *kiocb, +- struct socket *sock, struct msghdr *msg, size_t len); +-static int VSockVmciDgramRecvmsg(struct kiocb *kiocb, struct socket *sock, +- struct msghdr *msg, size_t len, int flags); +-static int VSockVmciStreamSendmsg(struct kiocb *kiocb, +- struct socket *sock, struct msghdr *msg, size_t len); +-static int VSockVmciStreamRecvmsg(struct kiocb *kiocb, struct socket *sock, +- struct msghdr *msg, size_t len, int flags); ++static int VSockVmciDgramSendmsg(struct socket *sock, struct msghdr *msg, size_t len); ++static int VSockVmciDgramRecvmsg(struct socket *sock, struct msghdr *msg, size_t len, int flags); ++static int VSockVmciStreamSendmsg(struct socket *sock, struct msghdr *msg, size_t len); ++static int VSockVmciStreamRecvmsg(struct socket *sock, struct msghdr *msg, size_t len, int flags); + + static int VSockVmciCreate( + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) +@@ -4211,8 +4207,7 @@ + */ + + static int +-VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED +- struct socket *sock, // IN: socket to send on ++VSockVmciDgramSendmsg(struct socket *sock, // IN: socket to send on + struct msghdr *msg, // IN: message to send + size_t len) // IN: length of message + { +@@ -4541,8 +4536,7 @@ + */ + + static int +-VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED +- struct socket *sock, // IN: socket to send on ++VSockVmciStreamSendmsg(struct socket *sock, // IN: socket to send on + struct msghdr *msg, // IN: message to send + size_t len) // IN: length of message + { +@@ -4710,8 +4704,7 @@ + */ + + static int +-VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED +- struct socket *sock, // IN: socket to receive from ++VSockVmciDgramRecvmsg(struct socket *sock, // IN: socket to receive from + struct msghdr *msg, // IN/OUT: message to receive into + size_t len, // IN: length of receive buffer + int flags) // IN: receive flags +@@ -4803,8 +4796,7 @@ + */ + + static int +-VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED +- struct socket *sock, // IN: socket to receive from ++VSockVmciStreamRecvmsg(struct socket *sock, // IN: socket to receive from + struct msghdr *msg, // IN/OUT: message to receive into + size_t len, // IN: length of receive buffer + int flags) // IN: receive flags diff --git a/app-emulation/vmware-modules/files/308-4.02-00-nd_set_link.patch b/app-emulation/vmware-modules/files/308-4.02-00-nd_set_link.patch new file mode 100644 index 000000000000..66609bff6308 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-4.02-00-nd_set_link.patch @@ -0,0 +1,56 @@ +--- vmci-only/linux/driver.c 2015-02-07 01:11:55.000000000 +0100 ++++ vmci-only/linux/driver.c.new 2015-07-23 00:28:25.713804866 +0200 +@@ -37,6 +37,7 @@ + #include <linux/moduleparam.h> + #include <linux/poll.h> + #include <linux/smp.h> ++#include <linux/vmalloc.h> + + #include "compat_highmem.h" + #include "compat_interrupt.h" +--- vmblock-only/linux/inode.c 2015-08-23 00:34:11.959377109 +0200 ++++ vmblock-only/linux/inode.c.new 2015-08-23 00:37:49.839389292 +0200 +@@ -38,7 +38,9 @@ + static int InodeOpReadlink(struct dentry *, char __user *, int); + #endif + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) ++static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); + #else + static int InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); +@@ -203,13 +205,19 @@ + *---------------------------------------------------------------------------- + */ + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) ++static const char * ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void * + #else + static int + #endif + InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) ++ void **cookie) // OUT: stores opaque pointer ++#else + struct nameidata *nd) // OUT: stores result ++#endif + { + int ret; + VMBlockInodeInfo *iinfo; +@@ -226,7 +234,11 @@ + goto out; + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) ++ return *cookie = iinfo->name; ++#else + nd_set_link(nd, iinfo->name); ++#endif + + out: + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) diff --git a/app-emulation/vmware-modules/files/308-4.02-01-sk_alloc.patch b/app-emulation/vmware-modules/files/308-4.02-01-sk_alloc.patch new file mode 100644 index 000000000000..6437d6022a36 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-4.02-01-sk_alloc.patch @@ -0,0 +1,22 @@ +--- vmnet-only/vmnetInt.h 2015-05-28 01:46:53.023206897 +0200 ++++ vmnet-only/vmnetInt.h.new 2015-05-28 01:47:07.911207730 +0200 +@@ -79,7 +79,7 @@ + extern struct proto vmnet_proto; + #ifdef VMW_NETDEV_HAS_NET + # define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \ +- PF_NETLINK, _pri, &vmnet_proto) ++ PF_NETLINK, _pri, &vmnet_proto, 0) + #else + # define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1) + #endif +--- vsock-only/linux/af_vsock.c 2015-05-28 01:50:03.553217551 +0200 ++++ vsock-only/linux/af_vsock.c.new 2015-05-28 01:54:55.248233862 +0200 +@@ -2829,7 +2829,7 @@ + #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24) + sk = sk_alloc(vsockVmciFamilyOps.family, priority, &vsockVmciProto, 1); + #else +- sk = sk_alloc(net, vsockVmciFamilyOps.family, priority, &vsockVmciProto); ++ sk = sk_alloc(net, vsockVmciFamilyOps.family, priority, &vsockVmciProto, 0); + #endif + if (!sk) { + return NULL; diff --git a/app-emulation/vmware-modules/files/308-4.03-00-vmci-misc_deregister.patch b/app-emulation/vmware-modules/files/308-4.03-00-vmci-misc_deregister.patch new file mode 100644 index 000000000000..b2d93a66db84 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-4.03-00-vmci-misc_deregister.patch @@ -0,0 +1,27 @@ +diff -ru work.old/vmci-only/linux/driver.c work/vmci-only/linux/driver.c +--- work.old/vmci-only/linux/driver.c 2015-09-14 21:07:49.751696932 +0200 ++++ work/vmci-only/linux/driver.c 2015-09-14 22:10:48.015908198 +0200 +@@ -2467,8 +2467,6 @@ + static void __exit + vmci_exit(void) + { +- int retval; +- + if (guestDeviceInit) { + pci_unregister_driver(&vmci_driver); + vfree(data_buffer); +@@ -2480,12 +2478,8 @@ + + VMCI_HostCleanup(); + +- retval = misc_deregister(&linuxState.misc); +- if (retval) { +- Warning(LGPFX "Module %s: error unregistering\n", VMCI_MODULE_NAME); +- } else { +- Log(LGPFX"Module %s: unloaded\n", VMCI_MODULE_NAME); +- } ++ misc_deregister(&linuxState.misc); ++ Log(LGPFX"Module %s: unloaded\n", VMCI_MODULE_NAME); + + hostDeviceInit = FALSE; + } diff --git a/app-emulation/vmware-modules/files/308-4.03-00-vmmon-misc_deregister.patch b/app-emulation/vmware-modules/files/308-4.03-00-vmmon-misc_deregister.patch new file mode 100644 index 000000000000..9f0df66faa22 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-4.03-00-vmmon-misc_deregister.patch @@ -0,0 +1,14 @@ +diff -ru work.old/vmmon-only/linux/driver.c work/vmmon-only/linux/driver.c +--- work.old/vmmon-only/linux/driver.c 2015-08-14 22:39:49.000000000 +0200 ++++ work/vmmon-only/linux/driver.c 2015-09-14 22:11:06.807909249 +0200 +@@ -387,9 +387,7 @@ + #ifdef VMX86_DEVEL + unregister_chrdev(linuxState.major, linuxState.deviceName); + #else +- if (misc_deregister(&linuxState.misc)) { +- Warning("Module %s: error unregistering\n", linuxState.deviceName); +- } ++ misc_deregister(&linuxState.misc); + #endif + + Log("Module %s: unloaded\n", linuxState.deviceName); diff --git a/app-emulation/vmware-modules/files/308-4.05-00-vmblock-follow_link.patch b/app-emulation/vmware-modules/files/308-4.05-00-vmblock-follow_link.patch new file mode 100644 index 000000000000..c13929243275 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-4.05-00-vmblock-follow_link.patch @@ -0,0 +1,56 @@ +--- vmblock-only/linux/inode.c 2016-01-30 19:13:04.019947435 +0100 ++++ vmblock-only/linux/inode.c.new 2016-01-30 19:13:56.226950354 +0100 +@@ -44,7 +44,9 @@ + static int InodeOpReadlink(struct dentry *, char __user *, int); + #endif + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) ++static const char *InodeOpFollowlink(struct dentry *dentry, struct inode *inode, void **cookie); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) + static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie); + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); +@@ -63,7 +65,11 @@ + struct inode_operations LinkInodeOps = { + #endif + .readlink = InodeOpReadlink, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) ++ .get_link = InodeOpFollowlink, ++#else + .follow_link = InodeOpFollowlink, ++#endif + }; + + /* +@@ -231,6 +237,9 @@ + static int + #endif + InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) ++ struct inode *inode, ++#endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) + void **cookie) // OUT: stores opaque pointer + #else +@@ -241,12 +250,20 @@ + VMBlockInodeInfo *iinfo; + + if (!dentry) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) ++ ret = -ECHILD; ++#else + Warning("InodeOpReadlink: invalid args from kernel\n"); + ret = -EINVAL; ++#endif + goto out; + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) ++ iinfo = INODE_TO_IINFO(inode); ++#else + iinfo = INODE_TO_IINFO(dentry->d_inode); ++#endif + if (!iinfo) { + ret = -EINVAL; + goto out; diff --git a/app-emulation/vmware-modules/files/308-apic.patch b/app-emulation/vmware-modules/files/308-apic.patch new file mode 100644 index 000000000000..66cd45933246 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-apic.patch @@ -0,0 +1,12 @@ +diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c +index f1f4b10..c43242f 100644 +--- a/vmmon-only/linux/hostif.c ++++ b/vmmon-only/linux/hostif.c +@@ -55,6 +55,7 @@ + #include <linux/kthread.h> + #include <linux/wait.h> + ++#include <asm/apic.h> + + #include "vmware.h" + #include "x86apic.h" diff --git a/app-emulation/vmware-modules/files/308-hardened.patch b/app-emulation/vmware-modules/files/308-hardened.patch new file mode 100644 index 000000000000..31d5917c37ce --- /dev/null +++ b/app-emulation/vmware-modules/files/308-hardened.patch @@ -0,0 +1,89 @@ +diff --git a/vmmon-only/linux/driver.c b/vmmon-only/linux/driver.c +index b21dd44..960c2aa 100644 +--- a/vmmon-only/linux/driver.c ++++ b/vmmon-only/linux/driver.c +@@ -178,7 +178,16 @@ static struct vm_operations_struct vmuser_mops = { + #endif + }; + +-static struct file_operations vmuser_fops; ++static struct file_operations vmuser_fops = { ++ .owner = THIS_MODULE, ++ .poll = LinuxDriverPoll, ++ .unlocked_ioctl = LinuxDriver_Ioctl, ++ .compat_ioctl = LinuxDriver_Ioctl, ++ .open = LinuxDriver_Open, ++ .release = LinuxDriver_Close, ++ .mmap = LinuxDriverMmap ++}; ++ + static struct timer_list tscTimer; + static Atomic_uint32 tsckHz; + static VmTimeStart tsckHzStartTime; +@@ -357,21 +372,6 @@ init_module(void) + linuxState.fastClockPriority = -20; + linuxState.swapSize = VMMON_UNKNOWN_SWAP_SIZE; + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vmuser_fops, 0, sizeof vmuser_fops); +- vmuser_fops.owner = THIS_MODULE; +- vmuser_fops.poll = LinuxDriverPoll; +- vmuser_fops.unlocked_ioctl = LinuxDriver_Ioctl; +- vmuser_fops.compat_ioctl = LinuxDriver_Ioctl; +- vmuser_fops.open = LinuxDriver_Open; +- vmuser_fops.release = LinuxDriver_Close; +- vmuser_fops.mmap = LinuxDriverMmap; +- + #ifdef VMX86_DEVEL + devel_init_module(); + linuxState.minor = 0; +diff --git a/vmnet-only/driver.c b/vmnet-only/driver.c +index b12b982..40bd4cf 100644 +--- a/vmnet-only/driver.c ++++ b/vmnet-only/driver.c +@@ -165,7 +165,16 @@ static long VNetFileOpUnlockedIoctl(struct file * filp, + unsigned int iocmd, unsigned long ioarg); + #endif + +-static struct file_operations vnetFileOps; ++static struct file_operations vnetFileOps = { ++ .owner = THIS_MODULE, ++ .read = VNetFileOpRead, ++ .write = VNetFileOpWrite, ++ .poll = VNetFileOpPoll, ++ .unlocked_ioctl = VNetFileOpUnlockedIoctl, ++ .compat_ioctl = VNetFileOpUnlockedIoctl, ++ .open = VNetFileOpOpen, ++ .release = VNetFileOpClose ++}; + + /* + * Utility functions +@@ -476,22 +491,6 @@ init_module(void) + goto err_proto; + } + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vnetFileOps, 0, sizeof vnetFileOps); +- vnetFileOps.owner = THIS_MODULE; +- vnetFileOps.read = VNetFileOpRead; +- vnetFileOps.write = VNetFileOpWrite; +- vnetFileOps.poll = VNetFileOpPoll; +- vnetFileOps.unlocked_ioctl = VNetFileOpUnlockedIoctl; +- vnetFileOps.compat_ioctl = VNetFileOpUnlockedIoctl; +- vnetFileOps.open = VNetFileOpOpen; +- vnetFileOps.release = VNetFileOpClose; +- + retval = register_chrdev(VNET_MAJOR_NUMBER, "vmnet", &vnetFileOps); + if (retval) { + LOG(0, (KERN_NOTICE "/dev/vmnet: could not register major device %d\n", diff --git a/app-emulation/vmware-modules/files/308-makefile-include.patch b/app-emulation/vmware-modules/files/308-makefile-include.patch new file mode 100644 index 000000000000..39c300030805 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-makefile-include.patch @@ -0,0 +1,65 @@ +diff --git a/vmblock-only/Makefile.kernel b/vmblock-only/Makefile.kernel +index ab7a727..e3ec9d2 100644 +--- a/vmblock-only/Makefile.kernel ++++ b/vmblock-only/Makefile.kernel +@@ -19,7 +19,7 @@ + + INCLUDE += -I$(SRCROOT)/include + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachecreate.c, -DVMW_KMEMCR_HAS_DTOR, ) + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachector.c, -DVMW_KMEMCR_CTOR_HAS_3_ARGS, ) +diff --git a/vmci-only/Makefile.kernel b/vmci-only/Makefile.kernel +index ba343ee..861ea83 100644 +--- a/vmci-only/Makefile.kernel ++++ b/vmci-only/Makefile.kernel +@@ -21,7 +21,7 @@ CC_OPTS += -DVMCI + + INCLUDE += -I$(SRCROOT)/shared -I$(SRCROOT)/common -I$(SRCROOT)/linux + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + obj-m += $(DRIVER).o + +diff --git a/vmmon-only/Makefile.kernel b/vmmon-only/Makefile.kernel +index 8770d1d..c4746c3 100644 +--- a/vmmon-only/Makefile.kernel ++++ b/vmmon-only/Makefile.kernel +@@ -22,7 +22,7 @@ CC_OPTS += -DVMMON -DVMCORE + INCLUDE := -I$(SRCROOT)/include -I$(SRCROOT)/common -I$(SRCROOT)/linux \ + -I$(SRCROOT)/vmcore + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/smpcall.c, -DVMW_HAVE_SMP_CALL_3ARG, ) + +diff --git a/vmnet-only/Makefile.kernel b/vmnet-only/Makefile.kernel +index d1e3133..665d428 100644 +--- a/vmnet-only/Makefile.kernel ++++ b/vmnet-only/Makefile.kernel +@@ -19,7 +19,7 @@ + + INCLUDE := -I$(SRCROOT) + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_net.c,-DVMW_NETDEV_HAS_NET, ) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_dev_net.c,-DVMW_NETDEV_HAS_DEV_NET, ) + EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/nfhook_uses_skb.c,-DVMW_NFHOOK_USES_SKB, ) +diff --git a/vsock-only/Makefile.kernel b/vsock-only/Makefile.kernel +index b4629ee..264b8cb 100644 +--- a/vsock-only/Makefile.kernel ++++ b/vsock-only/Makefile.kernel +@@ -25,7 +25,7 @@ INCLUDE += -I$(SRCROOT)/include + INCLUDE += -I$(SRCROOT)/linux + INCLUDE += -I$(SRCROOT)/common + +-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) ++EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) + EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/netcreate_num_params.c, -DVMW_NETCREATE_KERNARG, ) + + diff --git a/app-emulation/vmware-modules/files/308-makefile-kernel-dir.patch b/app-emulation/vmware-modules/files/308-makefile-kernel-dir.patch new file mode 100644 index 000000000000..1a647a3302d8 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-makefile-kernel-dir.patch @@ -0,0 +1,85 @@ +diff --git a/vmblock-only/Makefile b/vmblock-only/Makefile +index 2b81323..746c8b8 100644 +--- a/vmblock-only/Makefile ++++ b/vmblock-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmblock + PRODUCT := ws +diff --git a/vmci-only/Makefile b/vmci-only/Makefile +index 8e9c5be..6ec828b 100644 +--- a/vmci-only/Makefile ++++ b/vmci-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmci + PRODUCT := ws +diff --git a/vmmon-only/Makefile b/vmmon-only/Makefile +index 5bd867b..91a83d4 100644 +--- a/vmmon-only/Makefile ++++ b/vmmon-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmmon + PRODUCT := @@PRODUCT@@ +diff --git a/vmnet-only/Makefile b/vmnet-only/Makefile +index d4eb73c..c7c6d38 100644 +--- a/vmnet-only/Makefile ++++ b/vmnet-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vmnet + PRODUCT := @@PRODUCT@@ +diff --git a/vsock-only/Makefile b/vsock-only/Makefile +index 93dd61d..9765696 100644 +--- a/vsock-only/Makefile ++++ b/vsock-only/Makefile +@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r) + ifdef LINUXINCLUDE + HEADER_DIR = $(LINUXINCLUDE) + else +-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include ++HEADER_DIR = $(KERNEL_DIR) + endif + +-BUILD_DIR = $(HEADER_DIR)/.. ++BUILD_DIR = $(KBUILD_OUTPUT) + + DRIVER := vsock + PRODUCT := ws diff --git a/app-emulation/vmware-modules/files/308-netdevice.patch b/app-emulation/vmware-modules/files/308-netdevice.patch new file mode 100644 index 000000000000..35231a3205e3 --- /dev/null +++ b/app-emulation/vmware-modules/files/308-netdevice.patch @@ -0,0 +1,24 @@ +diff --git a/vmnet-only/compat_netdevice.h b/vmnet-only/compat_netdevice.h +index 7a56304..9ff4548 100644 +--- a/vmnet-only/compat_netdevice.h ++++ b/vmnet-only/compat_netdevice.h +@@ -47,6 +47,19 @@ + # define net_device device + #endif + ++/* it looks like these have been removed from the kernel 3.1 ++ * probably because the "transition" is considered complete. ++ * so to keep this source compatible we just redefine them like they were ++ * previously ++ */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0) ++#define HAVE_ALLOC_NETDEV /* feature macro: alloc_xxxdev ++ functions are available. */ ++#define HAVE_FREE_NETDEV /* free_netdev() */ ++#define HAVE_NETDEV_PRIV /* netdev_priv() */ ++#define HAVE_NETIF_QUEUE ++#define HAVE_NET_DEVICE_OPS ++#endif + + /* + * SET_MODULE_OWNER appeared sometime during 2.3.x. It was setting diff --git a/app-emulation/vmware-modules/files/hardened.patch b/app-emulation/vmware-modules/files/hardened.patch new file mode 100644 index 000000000000..ea1b0f300751 --- /dev/null +++ b/app-emulation/vmware-modules/files/hardened.patch @@ -0,0 +1,170 @@ +diff --git a/vmci-only/linux/driver.c b/vmci-only/linux/driver.c +index 921f25c..41a39e3 100644 +--- a/vmci-only/linux/driver.c ++++ b/vmci-only/linux/driver.c +@@ -241,7 +241,24 @@ static unsigned int LinuxDriverPoll(struct file *file, poll_table *wait); + #define LinuxDriverUnlockIoctlPerFD(mutex) do {} while (0) + #endif + +-static struct file_operations vmuser_fops; ++/* ++ * Moved file operations initialize here because of incompatibilites ++ * with Gentoo hardened profile/hardend Linux 3. ++ */ ++static struct file_operations vmuser_fops = { ++ .owner = THIS_MODULE, ++ .poll = LinuxDriverPoll, ++#ifdef HAVE_UNLOCKED_IOCTL ++ .unlocked_ioctl = LinuxDriver_UnlockedIoctl, ++#else ++ .ioctl = LinuxDriver_Ioctl, ++#endif ++#ifdef HAVE_COMPAT_IOCTL ++ .compat_ioctl = LinuxDriver_UnlockedIoctl, ++#endif ++ .open = LinuxDriver_Open, ++ .release = LinuxDriver_Close ++}; + + + /* +@@ -378,26 +395,6 @@ vmci_host_init(void) + return -ENOMEM; + } + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vmuser_fops, 0, sizeof vmuser_fops); +- vmuser_fops.owner = THIS_MODULE; +- vmuser_fops.poll = LinuxDriverPoll; +-#ifdef HAVE_UNLOCKED_IOCTL +- vmuser_fops.unlocked_ioctl = LinuxDriver_UnlockedIoctl; +-#else +- vmuser_fops.ioctl = LinuxDriver_Ioctl; +-#endif +-#ifdef HAVE_COMPAT_IOCTL +- vmuser_fops.compat_ioctl = LinuxDriver_UnlockedIoctl; +-#endif +- vmuser_fops.open = LinuxDriver_Open; +- vmuser_fops.release = LinuxDriver_Close; +- + sprintf(linuxState.deviceName, "vmci"); + linuxState.major = 10; + linuxState.misc.minor = MISC_DYNAMIC_MINOR; +diff --git a/vmmon-only/linux/driver.c b/vmmon-only/linux/driver.c +index b21dd44..960c2aa 100644 +--- a/vmmon-only/linux/driver.c ++++ b/vmmon-only/linux/driver.c +@@ -178,7 +178,22 @@ static struct vm_operations_struct vmuser_mops = { + #endif + }; + +-static struct file_operations vmuser_fops; ++static struct file_operations vmuser_fops = { ++ .owner = THIS_MODULE, ++ .poll = LinuxDriverPoll, ++#ifdef HAVE_UNLOCKED_IOCTL ++ .unlocked_ioctl = LinuxDriver_UnlockedIoctl, ++#else ++ .ioctl = LinuxDriver_Ioctl, ++#endif ++#ifdef HAVE_COMPAT_IOCTL ++ .compat_ioctl = LinuxDriver_UnlockedIoctl, ++#endif ++ .open = LinuxDriver_Open, ++ .release = LinuxDriver_Close, ++ .mmap = LinuxDriverMmap ++}; ++ + static struct timer_list tscTimer; + + /* +@@ -357,27 +372,6 @@ init_module(void) + spin_lock_init(&linuxState.pollListLock); + #endif + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vmuser_fops, 0, sizeof vmuser_fops); +- vmuser_fops.owner = THIS_MODULE; +- vmuser_fops.poll = LinuxDriverPoll; +-#ifdef HAVE_UNLOCKED_IOCTL +- vmuser_fops.unlocked_ioctl = LinuxDriver_UnlockedIoctl; +-#else +- vmuser_fops.ioctl = LinuxDriver_Ioctl; +-#endif +-#ifdef HAVE_COMPAT_IOCTL +- vmuser_fops.compat_ioctl = LinuxDriver_UnlockedIoctl; +-#endif +- vmuser_fops.open = LinuxDriver_Open; +- vmuser_fops.release = LinuxDriver_Close; +- vmuser_fops.mmap = LinuxDriverMmap; +- + #ifdef VMX86_DEVEL + devel_init_module(); + linuxState.minor = 0; +diff --git a/vmnet-only/driver.c b/vmnet-only/driver.c +index b12b982..40bd4cf 100644 +--- a/vmnet-only/driver.c ++++ b/vmnet-only/driver.c +@@ -165,7 +165,22 @@ static long VNetFileOpUnlockedIoctl(struct file * filp, + unsigned int iocmd, unsigned long ioarg); + #endif + +-static struct file_operations vnetFileOps; ++static struct file_operations vnetFileOps = { ++ .owner = THIS_MODULE, ++ .read = VNetFileOpRead, ++ .write = VNetFileOpWrite, ++ .poll = VNetFileOpPoll, ++#ifdef HAVE_UNLOCKED_IOCTL ++ .unlocked_ioctl = VNetFileOpUnlockedIoctl, ++#else ++ .ioctl = VNetFileOpIoctl, ++#endif ++#ifdef HAVE_COMPAT_IOCTL ++ .compat_ioctl = VNetFileOpUnlockedIoctl, ++#endif ++ .open = VNetFileOpOpen, ++ .release = VNetFileOpClose ++}; + + /* + * Utility functions +@@ -476,28 +491,6 @@ init_module(void) + goto err_proto; + } + +- /* +- * Initialize the file_operations structure. Because this code is always +- * compiled as a module, this is fine to do it here and not in a static +- * initializer. +- */ +- +- memset(&vnetFileOps, 0, sizeof vnetFileOps); +- vnetFileOps.owner = THIS_MODULE; +- vnetFileOps.read = VNetFileOpRead; +- vnetFileOps.write = VNetFileOpWrite; +- vnetFileOps.poll = VNetFileOpPoll; +-#ifdef HAVE_UNLOCKED_IOCTL +- vnetFileOps.unlocked_ioctl = VNetFileOpUnlockedIoctl; +-#else +- vnetFileOps.ioctl = VNetFileOpIoctl; +-#endif +-#ifdef HAVE_COMPAT_IOCTL +- vnetFileOps.compat_ioctl = VNetFileOpUnlockedIoctl; +-#endif +- vnetFileOps.open = VNetFileOpOpen; +- vnetFileOps.release = VNetFileOpClose; +- + retval = register_chrdev(VNET_MAJOR_NUMBER, "vmnet", &vnetFileOps); + if (retval) { + LOG(0, (KERN_NOTICE "/dev/vmnet: could not register major device %d\n", diff --git a/app-emulation/vmware-modules/metadata.xml b/app-emulation/vmware-modules/metadata.xml new file mode 100644 index 000000000000..dec09dcab00e --- /dev/null +++ b/app-emulation/vmware-modules/metadata.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>vmware@gentoo.org</email> + <name>Gentoo VMware Project</name> + </maintainer> + <longdescription> + VMware kernel modules. + </longdescription> + <use> + <flag name="pax_kernel">Apply patch needed for pax enabled kernels</flag> + <flag name="vmci">Build the Virtual Machine Communication Interface module; disable this if you want to use the module from the mainline kernel</flag> + <flag name="vsock">Build the VMware VMCI transport for Virtual Sockets; disable this if you want to use the module from the mainline kernel</flag> + </use> +</pkgmetadata> diff --git a/app-emulation/vmware-modules/vmware-modules-271.3-r1.ebuild b/app-emulation/vmware-modules/vmware-modules-271.3-r1.ebuild new file mode 100644 index 000000000000..68aa1dae9529 --- /dev/null +++ b/app-emulation/vmware-modules/vmware-modules-271.3-r1.ebuild @@ -0,0 +1,107 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI="4" + +inherit eutils flag-o-matic linux-info linux-mod user versionator udev + +PV_MAJOR=$(get_major_version) +PV_MINOR=$(get_version_component_range 2) + +DESCRIPTION="VMware kernel modules" +HOMEPAGE="http://www.vmware.com/" + +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="pax_kernel" + +RDEPEND="" +DEPEND="${RDEPEND} + || ( =app-emulation/vmware-player-5.0.${PV_MINOR}* + =app-emulation/vmware-workstation-9.0.${PV_MINOR}* )" + +S=${WORKDIR} + +pkg_setup() { + CONFIG_CHECK="~HIGH_RES_TIMERS" + if kernel_is ge 2 6 37 && kernel_is lt 2 6 39; then + CONFIG_CHECK="${CONFIG_CHECK} BKL" + fi + + linux-info_pkg_setup + + linux-mod_pkg_setup + + VMWARE_GROUP=${VMWARE_GROUP:-vmware} + + VMWARE_MODULE_LIST="vmblock vmci vmmon vmnet vsock" + VMWARE_MOD_DIR="${PN}-${PVR}" + + BUILD_TARGETS="auto-build KERNEL_DIR=${KERNEL_DIR} KBUILD_OUTPUT=${KV_OUT_DIR}" + + enewgroup "${VMWARE_GROUP}" + filter-flags -mfpmath=sse -mavx -mpclmul -maes + + for mod in ${VMWARE_MODULE_LIST}; do + MODULE_NAMES="${MODULE_NAMES} ${mod}(misc:${S}/${mod}-only)" + done +} + +src_unpack() { + cd "${S}" + for mod in ${VMWARE_MODULE_LIST}; do + tar -xf /opt/vmware/lib/vmware/modules/source/${mod}.tar + done +} + +src_prepare() { + epatch "${FILESDIR}/${PV_MAJOR}-makefile-kernel-dir.patch" + epatch "${FILESDIR}/${PV_MAJOR}-makefile-include.patch" + epatch "${FILESDIR}/${PV_MAJOR}-netdevice.patch" + use pax_kernel && epatch "${FILESDIR}/${PV_MAJOR}-hardened.patch" + epatch "${FILESDIR}/${PV_MAJOR}-apic.patch" + kernel_is ge 3 7 0 && epatch "${FILESDIR}/${PV_MAJOR}-putname.patch" + + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-00-userns.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-01-create_proc_entry.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-02-getname.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-03-deprecated.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-04-unused-typedef.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-05-dentry.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-06-inode.patch" + + # fixes a memcpy/memcmp bug in the hub code + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-07-hub.patch" + + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-00-readdir.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-01-filldir.patch" + kernel_is ge 3 13 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.13-00-vmnet.patch" + kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.15-00-readlink.patch" + kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.15-01-vsock.patch" + kernel_is ge 3 17 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.17-00-netdev.patch" + + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-00-vmnet-warning.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-01-vmblock-path.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-02-vmci.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-03-vmnet.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-04-vsock.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-05-vsock.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-06-vmci_qpair.patch" + + # Allow user patches so they can support RC kernels and whatever else + epatch_user +} + +src_install() { + linux-mod_src_install + local udevrules="${T}/60-vmware.rules" + cat > "${udevrules}" <<-EOF + KERNEL=="vmci", GROUP="vmware", MODE="660" + KERNEL=="vmmon", GROUP="vmware", MODE="660" + KERNEL=="vsock", GROUP="vmware", MODE="660" + EOF + udev_dorules "${udevrules}" +} diff --git a/app-emulation/vmware-modules/vmware-modules-279.6.ebuild b/app-emulation/vmware-modules/vmware-modules-279.6.ebuild new file mode 100644 index 000000000000..9543d955b8b8 --- /dev/null +++ b/app-emulation/vmware-modules/vmware-modules-279.6.ebuild @@ -0,0 +1,116 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=5 + +inherit eutils flag-o-matic linux-info linux-mod user versionator udev + +PV_MAJOR=$(get_major_version) +PV_MINOR=$(get_version_component_range 2) + +DESCRIPTION="VMware kernel modules" +HOMEPAGE="http://www.vmware.com/" + +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="pax_kernel +vmci +vsock" + +RDEPEND="" +DEPEND="${RDEPEND} + || ( =app-emulation/vmware-player-6.0.${PV_MINOR}* + =app-emulation/vmware-workstation-10.0.${PV_MINOR}* )" + +S=${WORKDIR} + +pkg_setup() { + CONFIG_CHECK="~HIGH_RES_TIMERS" + if kernel_is ge 2 6 37 && kernel_is lt 2 6 39; then + CONFIG_CHECK="${CONFIG_CHECK} BKL" + fi + if use vmci ; then + CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI" + else + CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI" + fi + if use vsock ; then + CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI_VSOCKETS" + else + CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI_VSOCKETS" + fi + + linux-info_pkg_setup + + linux-mod_pkg_setup + + VMWARE_GROUP=${VMWARE_GROUP:-vmware} + + VMWARE_MODULE_LIST_ALL="vmblock vmmon vmnet vmci vsock" + VMWARE_MODULE_LIST="vmblock vmmon vmnet" + use vmci && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vmci" + use vsock && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vsock" + + VMWARE_MOD_DIR="${PN}-${PVR}" + + BUILD_TARGETS="auto-build KERNEL_DIR=${KERNEL_DIR} KBUILD_OUTPUT=${KV_OUT_DIR}" + + enewgroup "${VMWARE_GROUP}" + filter-flags -mfpmath=sse -mavx -mpclmul -maes + + for mod in ${VMWARE_MODULE_LIST}; do + MODULE_NAMES="${MODULE_NAMES} ${mod}(misc:${S}/${mod}-only)" + done +} + +src_unpack() { + cd "${S}" + for mod in ${VMWARE_MODULE_LIST_ALL}; do + tar -xf /opt/vmware/lib/vmware/modules/source/${mod}.tar + done +} + +src_prepare() { + epatch "${FILESDIR}/${PV_MAJOR}-makefile-kernel-dir.patch" + epatch "${FILESDIR}/${PV_MAJOR}-makefile-include.patch" + epatch "${FILESDIR}/${PV_MAJOR}-netdevice.patch" + use pax_kernel && epatch "${FILESDIR}/279-hardened.patch" + epatch "${FILESDIR}/${PV_MAJOR}-apic.patch" + kernel_is ge 3 7 0 && epatch "${FILESDIR}/${PV_MAJOR}-putname.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-vmblock.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-5.10-00-userns.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-01-getname.patch" + #kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-03-deprecated.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-04-dentry.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-05-inode.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-filldir.patch" + kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.15-00-readlink.patch" + kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.15-01-vsock.patch" + kernel_is ge 3 17 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.17-00-netdev.patch" + kernel_is ge 3 18 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.18-00-version-redefined.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-00-compat-namei.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-01-dentry.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-02-vmblock-path.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-03-iovec.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-04-iovec.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-05-vmci_qpair.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-06-vsock.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-07-vsock.patch" + kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-00-cookie.patch" + + # Allow user patches so they can support RC kernels and whatever else + epatch_user +} + +src_install() { + linux-mod_src_install + local udevrules="${T}/60-vmware.rules" + cat > "${udevrules}" <<-EOF + KERNEL=="vmci", GROUP="vmware", MODE="660" + KERNEL=="vmw_vmci", GROUP="vmware", MODE="660" + KERNEL=="vmmon", GROUP="vmware", MODE="660" + KERNEL=="vsock", GROUP="vmware", MODE="660" + EOF + udev_dorules "${udevrules}" +} diff --git a/app-emulation/vmware-modules/vmware-modules-304.2.ebuild b/app-emulation/vmware-modules/vmware-modules-304.2.ebuild new file mode 100644 index 000000000000..64f231386494 --- /dev/null +++ b/app-emulation/vmware-modules/vmware-modules-304.2.ebuild @@ -0,0 +1,116 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=5 + +inherit eutils flag-o-matic linux-info linux-mod user versionator udev + +PV_MAJOR=$(get_major_version) +PV_MINOR=$(get_version_component_range 2) + +DESCRIPTION="VMware kernel modules" +HOMEPAGE="http://www.vmware.com/" + +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64" +IUSE="pax_kernel +vmci +vsock" + +RDEPEND="" +DEPEND="${RDEPEND} + || ( =app-emulation/vmware-player-7.1.${PV_MINOR}* + =app-emulation/vmware-workstation-11.1.${PV_MINOR}* )" + +S=${WORKDIR} + +pkg_setup() { + CONFIG_CHECK="~HIGH_RES_TIMERS" + if kernel_is ge 2 6 37 && kernel_is lt 2 6 39; then + CONFIG_CHECK="${CONFIG_CHECK} BKL" + fi + if use vmci ; then + CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI" + else + CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI" + fi + if use vsock ; then + CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI_VSOCKETS" + else + CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI_VSOCKETS" + fi + + linux-info_pkg_setup + + linux-mod_pkg_setup + + VMWARE_GROUP=${VMWARE_GROUP:-vmware} + + VMWARE_MODULE_LIST_ALL="vmblock vmmon vmnet vmci vsock" + VMWARE_MODULE_LIST="vmblock vmmon vmnet" + use vmci && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vmci" + use vsock && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vsock" + + VMWARE_MOD_DIR="${PN}-${PVR}" + + BUILD_TARGETS="auto-build KERNEL_DIR=${KERNEL_DIR} KBUILD_OUTPUT=${KV_OUT_DIR}" + + enewgroup "${VMWARE_GROUP}" + filter-flags -mfpmath=sse -mavx -mpclmul -maes + + for mod in ${VMWARE_MODULE_LIST}; do + MODULE_NAMES="${MODULE_NAMES} ${mod}(misc:${S}/${mod}-only)" + done +} + +src_unpack() { + cd "${S}" + for mod in ${VMWARE_MODULE_LIST_ALL}; do + tar -xf /opt/vmware/lib/vmware/modules/source/${mod}.tar + done +} + +src_prepare() { + epatch "${FILESDIR}/${PV_MAJOR}-makefile-kernel-dir.patch" + epatch "${FILESDIR}/${PV_MAJOR}-makefile-include.patch" + epatch "${FILESDIR}/${PV_MAJOR}-netdevice.patch" + use pax_kernel && epatch "${FILESDIR}/${PV_MAJOR}-hardened.patch" + epatch "${FILESDIR}/${PV_MAJOR}-apic.patch" + + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-00-dentry.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-01-inode.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-02-control.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-03-inline.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-00-readdir.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-01-filldir.patch" + kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.15-00-vsock.patch" + kernel_is ge 3 18 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.18-00-version-redefined.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-00-compat-namei.patch" + #kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-01-dentry.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-02-vmblock-path.patch" + #kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-03-iovec.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-04-iovec.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-05-vmci_qpair.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-06-vsock.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-07-vsock.patch" + kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-01-inode.patch" + kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-02-vmnetInt.patch" + kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-03-af_vsock.patch" + kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-04-driver.patch" + + # Allow user patches so they can support RC kernels and whatever else + epatch_user +} + +src_install() { + linux-mod_src_install + local udevrules="${T}/60-vmware.rules" + cat > "${udevrules}" <<-EOF + KERNEL=="vmci", GROUP="vmware", MODE="660" + KERNEL=="vmw_vmci", GROUP="vmware", MODE="660" + KERNEL=="vmmon", GROUP="vmware", MODE="660" + KERNEL=="vsock", GROUP="vmware", MODE="660" + EOF + udev_dorules "${udevrules}" +} diff --git a/app-emulation/vmware-modules/vmware-modules-304.3-r1.ebuild b/app-emulation/vmware-modules/vmware-modules-304.3-r1.ebuild new file mode 100644 index 000000000000..461d897ea8c7 --- /dev/null +++ b/app-emulation/vmware-modules/vmware-modules-304.3-r1.ebuild @@ -0,0 +1,118 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=5 + +inherit eutils flag-o-matic linux-info linux-mod user versionator udev + +PV_MAJOR=$(get_major_version) +PV_MINOR=$(get_version_component_range 2) + +DESCRIPTION="VMware kernel modules" +HOMEPAGE="http://www.vmware.com/" + +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="-* ~amd64" +IUSE="pax_kernel +vmci +vsock" + +RDEPEND="" +DEPEND="${RDEPEND} + || ( =app-emulation/vmware-player-7.1.${PV_MINOR}* + =app-emulation/vmware-workstation-11.1.${PV_MINOR}* )" + +S=${WORKDIR} + +pkg_setup() { + CONFIG_CHECK="~HIGH_RES_TIMERS" + if kernel_is ge 2 6 37 && kernel_is lt 2 6 39; then + CONFIG_CHECK="${CONFIG_CHECK} BKL" + fi + if use vmci ; then + CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI" + else + CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI" + fi + if use vsock ; then + CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI_VSOCKETS" + else + CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI_VSOCKETS" + fi + + linux-info_pkg_setup + + linux-mod_pkg_setup + + VMWARE_GROUP=${VMWARE_GROUP:-vmware} + + VMWARE_MODULE_LIST_ALL="vmblock vmmon vmnet vmci vsock" + VMWARE_MODULE_LIST="vmblock vmmon vmnet" + use vmci && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vmci" + use vsock && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vsock" + + VMWARE_MOD_DIR="${PN}-${PVR}" + + BUILD_TARGETS="auto-build KERNEL_DIR=${KERNEL_DIR} KBUILD_OUTPUT=${KV_OUT_DIR}" + + enewgroup "${VMWARE_GROUP}" + filter-flags -mfpmath=sse + + for mod in ${VMWARE_MODULE_LIST}; do + MODULE_NAMES="${MODULE_NAMES} ${mod}(misc:${S}/${mod}-only)" + done +} + +src_unpack() { + cd "${S}" + for mod in ${VMWARE_MODULE_LIST_ALL}; do + tar -xf /opt/vmware/lib/vmware/modules/source/${mod}.tar + done +} + +src_prepare() { + epatch "${FILESDIR}/${PV_MAJOR}-makefile-kernel-dir.patch" + epatch "${FILESDIR}/${PV_MAJOR}-makefile-include.patch" + epatch "${FILESDIR}/${PV_MAJOR}-netdevice.patch" + use pax_kernel && epatch "${FILESDIR}/${PV_MAJOR}-hardened.patch" + epatch "${FILESDIR}/${PV_MAJOR}-apic.patch" + + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-00-dentry.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-01-inode.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-02-control.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-03-inline.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-00-readdir.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-01-filldir.patch" + kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.15-00-vsock.patch" + kernel_is ge 3 18 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.18-00-version-redefined.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-00-compat-namei.patch" + #kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-01-dentry.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-02-vmblock-path.patch" + #kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-03-iovec.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-04-iovec.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-05-vmci_qpair.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-06-vsock.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-07-vsock.patch" + kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-00-inode_op.patch" + kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-01-vmci_vmalloc.patch" + kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-02-vsock.patch" + kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-03-vsock.patch" + kernel_is ge 4 3 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.3-00-misc_deregister.patch" + kernel_is ge 4 5 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.5-00-get_link.patch" + + # Allow user patches so they can support RC kernels and whatever else + epatch_user +} + +src_install() { + linux-mod_src_install + local udevrules="${T}/60-vmware.rules" + cat > "${udevrules}" <<-EOF + KERNEL=="vmci", GROUP="vmware", MODE="660" + KERNEL=="vmw_vmci", GROUP="vmware", MODE="660" + KERNEL=="vmmon", GROUP="vmware", MODE="660" + KERNEL=="vsock", GROUP="vmware", MODE="660" + EOF + udev_dorules "${udevrules}" +} diff --git a/app-emulation/vmware-modules/vmware-modules-308.1.0.ebuild b/app-emulation/vmware-modules/vmware-modules-308.1.0.ebuild new file mode 100644 index 000000000000..8c5f3412c69b --- /dev/null +++ b/app-emulation/vmware-modules/vmware-modules-308.1.0.ebuild @@ -0,0 +1,149 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=5 + +inherit eutils flag-o-matic linux-info linux-mod user versionator udev + +PV_MAJOR=$(get_major_version) +PV_MINOR=$(get_version_component_range 2-3) + +DESCRIPTION="VMware kernel modules" +HOMEPAGE="http://www.vmware.com/" + +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64" +IUSE="pax_kernel +vmci +vsock" +REQUIRED_USE="!vsock? ( !vmci )" + +RDEPEND="" +DEPEND="${RDEPEND} + || ( =app-emulation/vmware-player-12.${PV_MINOR}* + =app-emulation/vmware-workstation-12.${PV_MINOR}* )" + +S=${WORKDIR} + +pkg_setup() { + CONFIG_CHECK="~HIGH_RES_TIMERS" + if kernel_is ge 2 6 37 && kernel_is lt 2 6 39; then + CONFIG_CHECK="${CONFIG_CHECK} BKL" + fi + if use vmci ; then + CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI" + else + CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI" + fi + if use vsock ; then + CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI_VSOCKETS" + else + CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI_VSOCKETS" + fi + + linux-info_pkg_setup + + linux-mod_pkg_setup + + VMWARE_GROUP=${VMWARE_GROUP:-vmware} + + VMWARE_MODULE_LIST_ALL="vmblock vmmon vmnet vmci vsock" + VMWARE_MODULE_LIST="vmblock vmmon vmnet" + use vmci && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vmci" + use vsock && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vsock" + + VMWARE_MOD_DIR="${PN}-${PVR}" + + BUILD_TARGETS="auto-build KERNEL_DIR=${KERNEL_DIR} KBUILD_OUTPUT=${KV_OUT_DIR}" + + enewgroup "${VMWARE_GROUP}" + + filter-flags -mfpmath=sse -mavx -mpclmul -maes + append-cflags -mno-sse # Found a problem similar to bug #492964 + + for mod in ${VMWARE_MODULE_LIST}; do + MODULE_NAMES="${MODULE_NAMES} ${mod}(misc:${S}/${mod}-only)" + done +} + +src_unpack() { + cd "${S}" + for mod in ${VMWARE_MODULE_LIST_ALL}; do + tar -xf /opt/vmware/lib/vmware/modules/source/${mod}.tar + done +} + +src_prepare() { + epatch "${FILESDIR}/${PV_MAJOR}-makefile-kernel-dir.patch" + epatch "${FILESDIR}/${PV_MAJOR}-makefile-include.patch" + epatch "${FILESDIR}/${PV_MAJOR}-netdevice.patch" + use pax_kernel && epatch "${FILESDIR}/${PV_MAJOR}-hardened.patch" + epatch "${FILESDIR}/${PV_MAJOR}-apic.patch" + + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-00-dentry.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-01-inode.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-02-control.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-03-inline.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-00-readdir.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-01-filldir.patch" + kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.15-00-vsock.patch" + kernel_is ge 3 18 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.18-00-version-redefined.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-00-compat-namei.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-02-vmblock-path.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-04-iovec.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-05-vmci_qpair.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-06-vsock.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-07-vsock.patch" + kernel_is ge 4 1 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.01-00-vsock.patch" + kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.02-00-nd_set_link.patch" + kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.02-01-sk_alloc.patch" + kernel_is ge 4 3 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.03-00-vmci-misc_deregister.patch" + kernel_is ge 4 5 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.05-00-vmblock-follow_link.patch" + + # Allow user patches so they can support RC kernels and whatever else + epatch_user +} + +src_install() { + linux-mod_src_install + local udevrules="${T}/60-vmware.rules" + cat > "${udevrules}" <<-EOF + KERNEL=="vmci", GROUP="vmware", MODE="660" + KERNEL=="vmw_vmci", GROUP="vmware", MODE="660" + KERNEL=="vmmon", GROUP="vmware", MODE="660" + KERNEL=="vsock", GROUP="vmware", MODE="660" + EOF + udev_dorules "${udevrules}" + + if ! use vmci ; then + dodir /etc/modprobe.d/ + + cat > "${D}"/etc/modprobe.d/vmware.conf <<-EOF + # Support for vmware vmci in kernel module + alias vmci vmw_vmci + EOF + + export installed_modprobe_conf=1 + fi + if ! use vsock ; then + dodir /etc/modprobe.d/ + cat >> "${D}"/etc/modprobe.d/vmware.conf <<-EOF + # Support for vmware vsock in kernel module + alias vsock vmw_vsock_vmci_transport + EOF + + export installed_modprobe_conf=1 + fi +} + +pkg_postinst() { + linux-mod_pkg_postinst + if [ "${installed_modprobe_conf}"x == "x" ] ; then + if [ -f "${ROOT}/etc/modprobe.d/vmware.conf" ] ; then + ewarn "Please check the /etc/modprobe.d/vmware.conf file and" + ewarn "possible conflicts when using vmci and/or vsock modules built" + ewarn "out of kernel" + fi + fi +} |