Compare commits
376 Commits
Author | SHA1 | Date |
---|---|---|
Zbigniew Jędrzejewski-Szmek | 97a6085912 | |
Zbigniew Jędrzejewski-Szmek | 9bf9a317b6 | |
Zbigniew Jędrzejewski-Szmek | 8bb6dc993a | |
Zbigniew Jędrzejewski-Szmek | afdd35ec48 | |
Zbigniew Jędrzejewski-Szmek | d9fc59f9a9 | |
Zbigniew Jędrzejewski-Szmek | bca98cfc50 | |
Zbigniew Jędrzejewski-Szmek | 39bdda8d19 | |
Zbigniew Jędrzejewski-Szmek | f28a96e50a | |
Zbigniew Jędrzejewski-Szmek | 5bf2aac8b4 | |
Zbigniew Jędrzejewski-Szmek | a734fa3ff3 | |
Zbigniew Jędrzejewski-Szmek | b6a8363c43 | |
Zbigniew Jędrzejewski-Szmek | 550422fe1b | |
Robert Scheck | 5acb5c4c08 | |
Zbigniew Jędrzejewski-Szmek | 96b7895b99 | |
Zbigniew Jędrzejewski-Szmek | 14b2fafb36 | |
Dusty Mabe | 283a994776 | |
Zbigniew Jędrzejewski-Szmek | 7d7120d566 | |
Zbigniew Jędrzejewski-Szmek | 3905512117 | |
Zbigniew Jędrzejewski-Szmek | ce6da66f61 | |
Zbigniew Jędrzejewski-Szmek | 147b753f29 | |
Zbigniew Jędrzejewski-Szmek | f10da8ae84 | |
Zbigniew Jędrzejewski-Szmek | b36512ad8f | |
Filipe Brandenburger | b50e9d7f29 | |
Christian Glombek | f455b2249a | |
Zbigniew Jędrzejewski-Szmek | 043ff2e2f0 | |
Zbigniew Jędrzejewski-Szmek | f74b957328 | |
Zbigniew Jędrzejewski-Szmek | de06d8e22c | |
Zbigniew Jędrzejewski-Szmek | 81cd8d4bcf | |
Zbigniew Jędrzejewski-Szmek | 269358bd5e | |
Zbigniew Jędrzejewski-Szmek | 04b6e059f7 | |
Zbigniew Jędrzejewski-Szmek | 0345c83b50 | |
Zbigniew Jędrzejewski-Szmek | 764adb18da | |
Zbigniew Jędrzejewski-Szmek | 1ebf8dd816 | |
Zbigniew Jędrzejewski-Szmek | 5a70c03b7f | |
Zbigniew Jędrzejewski-Szmek | d01d537e93 | |
Petr Lautrbach | 16c37db4fd | |
Zbigniew Jędrzejewski-Szmek | 98b9113655 | |
Zbigniew Jędrzejewski-Szmek | d5c1247285 | |
Zbigniew Jędrzejewski-Szmek | 27ec459b7b | |
Zbigniew Jędrzejewski-Szmek | eee99e6ccc | |
Zbigniew Jędrzejewski-Szmek | 84fad5038a | |
Zbigniew Jędrzejewski-Szmek | c8f86d89ba | |
Zbigniew Jędrzejewski-Szmek | 0eabb3de75 | |
Zbigniew Jędrzejewski-Szmek | 7445a298df | |
Zbigniew Jędrzejewski-Szmek | 30273d3292 | |
Zbigniew Jędrzejewski-Szmek | 65221f861e | |
Zbigniew Jędrzejewski-Szmek | 35e6dd7b1a | |
Zbigniew Jędrzejewski-Szmek | 437a7b8c4f | |
Zbigniew Jędrzejewski-Szmek | abd738eddc | |
Zbigniew Jędrzejewski-Szmek | a5acceb904 | |
Zbigniew Jędrzejewski-Szmek | 11b1c53b97 | |
Zbigniew Jędrzejewski-Szmek | 5bf170b999 | |
Zbigniew Jędrzejewski-Szmek | 5eb772cfb3 | |
Zbigniew Jędrzejewski-Szmek | 0a6ab0825d | |
Zbigniew Jędrzejewski-Szmek | 778a3758dd | |
Zbigniew Jędrzejewski-Szmek | 6fd99c397b | |
Zbigniew Jędrzejewski-Szmek | 65984c876a | |
Zbigniew Jędrzejewski-Szmek | 9488c31cc1 | |
Zbigniew Jędrzejewski-Szmek | 4f458499a5 | |
Zbigniew Jędrzejewski-Szmek | c432921859 | |
Zbigniew Jędrzejewski-Szmek | ca9af1e8a8 | |
Zbigniew Jędrzejewski-Szmek | 0688d7a091 | |
Zbigniew Jędrzejewski-Szmek | 55abe5f0ba | |
Petr Lautrbach | 9d2435f184 | |
Bastien Nocera | 6eb8bcde28 | |
Zbigniew Jędrzejewski-Szmek | ec562b2272 | |
Zbigniew Jędrzejewski-Szmek | 6dead14ceb | |
Zbigniew Jędrzejewski-Szmek | fb22f2a640 | |
Christian Glombek | 493f6fa66b | |
Björn Esser | 265d91aff5 | |
Björn Esser | 282e088f13 | |
Björn Esser | f983169655 | |
Björn Esser | b5c68a76ce | |
Zbigniew Jędrzejewski-Szmek | b80d007386 | |
Björn Esser | 63698f5ea0 | |
Zbigniew Jędrzejewski-Szmek | 80532792aa | |
Zbigniew Jędrzejewski-Szmek | 6238d479ae | |
Zbigniew Jędrzejewski-Szmek | 8a34ce7dca | |
Zbigniew Jędrzejewski-Szmek | be4317e8bf | |
Zbigniew Jędrzejewski-Szmek | 91fd7acc9e | |
Zbigniew Jędrzejewski-Szmek | 24d7f17342 | |
Zbigniew Jędrzejewski-Szmek | 48edd5b3a5 | |
Zbigniew Jędrzejewski-Szmek | bb79fb7387 | |
Zbigniew Jędrzejewski-Szmek | 7ceda13192 | |
Zbigniew Jędrzejewski-Szmek | 86b1777f9b | |
Zbigniew Jędrzejewski-Szmek | 8f2e234d97 | |
Zbigniew Jędrzejewski-Szmek | a4507efa4e | |
Zbigniew Jędrzejewski-Szmek | 788f973eab | |
Zbigniew Jędrzejewski-Szmek | 111b3c5a31 | |
Zbigniew Jędrzejewski-Szmek | ab2423caa9 | |
Zbigniew Jędrzejewski-Szmek | a4e7f2840f | |
Zbigniew Jędrzejewski-Szmek | 61de05c228 | |
Zbigniew Jędrzejewski-Szmek | db1cfc0955 | |
Zbigniew Jędrzejewski-Szmek | aed5718c3a | |
Zbigniew Jędrzejewski-Szmek | 933c039e04 | |
Zbigniew Jędrzejewski-Szmek | 01e2d8a982 | |
Filipe Brandenburger | 529ae77811 | |
Filipe Brandenburger | 5c5a95ecb4 | |
Zbigniew Jędrzejewski-Szmek | 437cd52f28 | |
Zbigniew Jędrzejewski-Szmek | a8129e0964 | |
Adam Williamson | 3620ae5f58 | |
Zbigniew Jędrzejewski-Szmek | 3666983037 | |
Zbigniew Jędrzejewski-Szmek | 6aa6d755fb | |
Zbigniew Jędrzejewski-Szmek | ced9237a14 | |
Zbigniew Jędrzejewski-Szmek | 9434e617a6 | |
Zbigniew Jędrzejewski-Szmek | d1a1f09895 | |
Zbigniew Jędrzejewski-Szmek | 513853f320 | |
Fedora Release Engineering | d9b9454de8 | |
Anita Zhang | 58b22cf334 | |
Zbigniew Jędrzejewski-Szmek | 2ccb3a9dee | |
Zbigniew Jędrzejewski-Szmek | 4cd9bf575b | |
Zbigniew Jędrzejewski-Szmek | 51ab4bc42e | |
Zbigniew Jędrzejewski-Szmek | ed1ff6f641 | |
Zbigniew Jędrzejewski-Szmek | 8964873178 | |
Zbigniew Jędrzejewski-Szmek | a746962e75 | |
Zbigniew Jędrzejewski-Szmek | da9dae21d7 | |
Zbigniew Jędrzejewski-Szmek | 5abc564f03 | |
Adam Williamson | ec1d7bb8af | |
Zbigniew Jędrzejewski-Szmek | 82d2fa2f16 | |
Zbigniew Jędrzejewski-Szmek | a556e1f3e2 | |
Zbigniew Jędrzejewski-Szmek | a760231337 | |
Zbigniew Jędrzejewski-Szmek | 7aa63f3164 | |
Zbigniew Jędrzejewski-Szmek | 1f0a2f0802 | |
Zbigniew Jędrzejewski-Szmek | 090a9d035f | |
Adam Williamson | 07b358f168 | |
Zbigniew Jędrzejewski-Szmek | 37d9de1fcf | |
Zbigniew Jędrzejewski-Szmek | d7b2d46533 | |
Adam Williamson | 07f0cd95cf | |
Zbigniew Jędrzejewski-Szmek | f1413ea879 | |
Fedora Release Engineering | bf71ff0b85 | |
Zbigniew Jędrzejewski-Szmek | 8848319ef8 | |
Björn Esser | 1c4be10032 | |
Miro Hrončok | d15ab16efa | |
Zbigniew Jędrzejewski-Szmek | b9896dc2ce | |
Zbigniew Jędrzejewski-Szmek | 6dff989abd | |
Adam Williamson | a419fcc3bd | |
Zbigniew Jędrzejewski-Szmek | 4480cada02 | |
Zbigniew Jędrzejewski-Szmek | 89aa08197f | |
Zbigniew Jędrzejewski-Szmek | 4c67e1cb51 | |
Zbigniew Jędrzejewski-Szmek | c7ac97585c | |
Zbigniew Jędrzejewski-Szmek | 77ab9b5088 | |
Zbigniew Jędrzejewski-Szmek | 5fb495cb03 | |
Zbigniew Jędrzejewski-Szmek | 2379dd06da | |
Zbigniew Jędrzejewski-Szmek | 836fcf414a | |
Zbigniew Jędrzejewski-Szmek | 1d22340882 | |
Zbigniew Jędrzejewski-Szmek | b61052552e | |
Zbigniew Jędrzejewski-Szmek | cf6cab52f2 | |
Zbigniew Jędrzejewski-Szmek | 484de996fc | |
Zbigniew Jędrzejewski-Szmek | 21fe449c94 | |
Zbigniew Jędrzejewski-Szmek | 94a4908748 | |
Zbigniew Jędrzejewski-Szmek | 32a6a004db | |
Zbigniew Jędrzejewski-Szmek | cda068c40d | |
Zbigniew Jędrzejewski-Szmek | 922e5d4fa4 | |
Zbigniew Jędrzejewski-Szmek | 6af7b47648 | |
Zbigniew Jędrzejewski-Szmek | 660962e17a | |
Zbigniew Jędrzejewski-Szmek | 79a1c5f8e8 | |
Zbigniew Jędrzejewski-Szmek | 5df67cdae8 | |
Zbigniew Jędrzejewski-Szmek | 442c8d41a9 | |
Zbigniew Jędrzejewski-Szmek | edaa157918 | |
Fedora Release Engineering | 8d4a0946d1 | |
Yu Watanabe | ee8fc244d8 | |
Zbigniew Jędrzejewski-Szmek | 0eab21cb2b | |
Zbigniew Jędrzejewski-Szmek | a787811921 | |
Björn Esser | 3eb9903ba0 | |
Zbigniew Jędrzejewski-Szmek | 4557ee0872 | |
Zbigniew Jędrzejewski-Szmek | 0214da5fc8 | |
Zbigniew Jędrzejewski-Szmek | ea91d39bdd | |
Zbigniew Jędrzejewski-Szmek | 7d37aab780 | |
Zbigniew Jędrzejewski-Szmek | 9a32090cc2 | |
Yu Watanabe | d644e8032c | |
Zbigniew Jędrzejewski-Szmek | b80d668d9e | |
Zbigniew Jędrzejewski-Szmek | 4100d92c45 | |
Zbigniew Jędrzejewski-Szmek | 47d443ea5d | |
Zbigniew Jędrzejewski-Szmek | 3a45ccbeb1 | |
Zbigniew Jędrzejewski-Szmek | 85e1a222f7 | |
Zbigniew Jędrzejewski-Szmek | 4ba08126b1 | |
Zbigniew Jędrzejewski-Szmek | 8bc4ef61e5 | |
Zbigniew Jędrzejewski-Szmek | 9977ebc5d7 | |
Zbigniew Jędrzejewski-Szmek | cda71799e7 | |
Zbigniew Jędrzejewski-Szmek | b3c65ffbe3 | |
Zbigniew Jędrzejewski-Szmek | 07e98bcf32 | |
Alejandro Domínguez Muñoz | 9a0025413c | |
Alejandro Domínguez Muñoz | b2165dc717 | |
Adam Williamson | 8510cadb34 | |
Adam Williamson | 71e781a096 | |
Yu Watanabe | d15bd12f49 | |
Yu Watanabe | db19323db2 | |
Zbigniew Jędrzejewski-Szmek | e394248861 | |
Zbigniew Jędrzejewski-Szmek | c9030f045b | |
Zbigniew Jędrzejewski-Szmek | 59823848fc | |
Zbigniew Jędrzejewski-Szmek | 6a3bb3f641 | |
Zbigniew Jędrzejewski-Szmek | 6714fc2555 | |
Jan Synacek | d8d2ff965e | |
Jan Synacek | 1f6dfb7453 | |
Colin Walters | 48ac1cebde | |
Zbigniew Jędrzejewski-Szmek | 184871e826 | |
Zbigniew Jędrzejewski-Szmek | 5306894742 | |
Zbigniew Jędrzejewski-Szmek | e7883a3ff9 | |
Zbigniew Jędrzejewski-Szmek | 07b77042bc | |
Filipe Brandenburger | 05bb389ca4 | |
Fedora Release Engineering | ad150b1fc6 | |
Zbigniew Jędrzejewski-Szmek | a2b05050f9 | |
Zbigniew Jędrzejewski-Szmek | eb80e67908 | |
Miro Hrončok | c8d1507e04 | |
Zbigniew Jędrzejewski-Szmek | b59ff1a2fc | |
Zbigniew Jędrzejewski-Szmek | 6a5d5d666c | |
Zbigniew Jędrzejewski-Szmek | bb3fb8bc57 | |
Zbigniew Jędrzejewski-Szmek | b05aec5ee0 | |
Zbigniew Jędrzejewski-Szmek | e8a9546241 | |
Zbigniew Jędrzejewski-Szmek | 3c9433d7cf | |
Zbigniew Jędrzejewski-Szmek | a818a9f2ca | |
Colin Walters | dc46312de2 | |
Colin Walters | 8e6b39457b | |
Zbigniew Jędrzejewski-Szmek | f770414d95 | |
Zbigniew Jędrzejewski-Szmek | b5fa4adf3f | |
Zbigniew Jędrzejewski-Szmek | 176a1807d2 | |
Zbigniew Jędrzejewski-Szmek | d4d36e6a87 | |
Yu Watanabe | d10793d82b | |
Yu Watanabe | 792370f28d | |
Zbigniew Jędrzejewski-Szmek | 77f7c6f491 | |
Zbigniew Jędrzejewski-Szmek | 98ea23b9ac | |
Javier Martinez Canillas | fd0679e1ff | |
Zbigniew Jędrzejewski-Szmek | 885c28c248 | |
Adam Williamson | f5d69da27a | |
Zbigniew Jędrzejewski-Szmek | 273dc0fda0 | |
Patrick Uiterwijk | a88494686e | |
Patrick Uiterwijk | 6f5e81a1a0 | |
Zbigniew Jędrzejewski-Szmek | 6eaf251a9e | |
Zbigniew Jędrzejewski-Szmek | 388cd917f1 | |
Zbigniew Jędrzejewski-Szmek | 3e18b458fc | |
Zbigniew Jędrzejewski-Szmek | 8dc92a4da2 | |
Zbigniew Jędrzejewski-Szmek | c8ec349ecc | |
Zbigniew Jędrzejewski-Szmek | aadfe52dca | |
Zbigniew Jędrzejewski-Szmek | 339b0245df | |
Zbigniew Jędrzejewski-Szmek | 7ffa9232c4 | |
Zbigniew Jędrzejewski-Szmek | fb4de3a52a | |
Zbigniew Jędrzejewski-Szmek | e3edeed65d | |
Zbigniew Jędrzejewski-Szmek | d13ecfd07d | |
Björn Esser | 3595fb5110 | |
Björn Esser | af29920ddf | |
Zbigniew Jędrzejewski-Szmek | 38d7cff9f6 | |
Zbigniew Jędrzejewski-Szmek | 1eeb98d33d | |
Zbigniew Jędrzejewski-Szmek | f314ba8790 | |
Yu Watanabe | e0aa12142f | |
Zbigniew Jędrzejewski-Szmek | 2125b9b134 | |
Yu Watanabe | f59138540e | |
Yu Watanabe | e92fe49e42 | |
Yu Watanabe | 219c026dc0 | |
Yu Watanabe | dc44a1da74 | |
Yu Watanabe | db8b8fe77c | |
Yu Watanabe | a8ba7b15a2 | |
Yu Watanabe | 9653e125fd | |
Zbigniew Jędrzejewski-Szmek | 17a6f382d1 | |
Zbigniew Jędrzejewski-Szmek | f00d23638b | |
Zbigniew Jędrzejewski-Szmek | 35bb94669a | |
Zbigniew Jędrzejewski-Szmek | ca246f98ec | |
Zbigniew Jędrzejewski-Szmek | 8a752251c4 | |
Zbigniew Jędrzejewski-Szmek | a46c781ba7 | |
Zbigniew Jędrzejewski-Szmek | 3cb1145229 | |
Nathaniel McCallum | ac49c72d1e | |
Michal Sekletar | 1d5166b9df | |
Zbigniew Jędrzejewski-Szmek | 8b20c798c7 | |
Zbigniew Jędrzejewski-Szmek | 27bd1bd49f | |
Fedora Release Engineering | 8d4133f998 | |
Zbigniew Jędrzejewski-Szmek | d044ab56d6 | |
Zbigniew Jędrzejewski-Szmek | f3e3e4d477 | |
Zbigniew Jędrzejewski-Szmek | 84e7848871 | |
Zbigniew Jędrzejewski-Szmek | 22eb6688a2 | |
Zbigniew Jędrzejewski-Szmek | 5bf44923db | |
Zbigniew Jędrzejewski-Szmek | c2bfa7b218 | |
Zbigniew Jędrzejewski-Szmek | 83f115d68f | |
Zbigniew Jędrzejewski-Szmek | 4ebba8aac1 | |
Zbigniew Jędrzejewski-Szmek | 61120120a0 | |
Zbigniew Jędrzejewski-Szmek | acc114f21c | |
Zbigniew Jędrzejewski-Szmek | 054ce3eced | |
Zbigniew Jędrzejewski-Szmek | 4bbfd1a314 | |
Zbigniew Jędrzejewski-Szmek | d743bb5bcc | |
Zbigniew Jędrzejewski-Szmek | 0e8350ca14 | |
Zbigniew Jędrzejewski-Szmek | 3fb4a15096 | |
Zbigniew Jędrzejewski-Szmek | 1d06cbf3d4 | |
Zbigniew Jędrzejewski-Szmek | f4a67616bd | |
Zbigniew Jędrzejewski-Szmek | ee53796748 | |
Pat Riehecky | c0f6af7fcc | |
Zbigniew Jędrzejewski-Szmek | 3e3b80766f | |
Michal Sekletar | e47c648430 | |
Michal Sekletar | f5f0737829 | |
Zbigniew Jędrzejewski-Szmek | 2809df176d | |
Zbigniew Jędrzejewski-Szmek | bb41272694 | |
Zbigniew Jędrzejewski-Szmek | 4877912f6e | |
Zbigniew Jędrzejewski-Szmek | 645d1b9eb7 | |
Zbigniew Jędrzejewski-Szmek | 7d23031443 | |
Zbigniew Jędrzejewski-Szmek | a88eae1c54 | |
Zbigniew Jędrzejewski-Szmek | 40fcd871d4 | |
Zbigniew Jędrzejewski-Szmek | 6353553a57 | |
Zbigniew Jędrzejewski-Szmek | cfadacd273 | |
Zbigniew Jędrzejewski-Szmek | d4f0a28c8c | |
Zbigniew Jędrzejewski-Szmek | 0f34996575 | |
Jan Synacek | 78d35a9ba2 | |
Zbigniew Jędrzejewski-Szmek | f020f8b986 | |
Fedora Release Engineering | 6c1e2a67b2 | |
Zbigniew Jędrzejewski-Szmek | 5d6eedd538 | |
Zbigniew Jędrzejewski-Szmek | b6b3541a52 | |
Zbigniew Jędrzejewski-Szmek | 405c2cd182 | |
Zbigniew Jędrzejewski-Szmek | 6396212453 | |
Zbigniew Jędrzejewski-Szmek | 03e93e27d9 | |
Adam Williamson | 4c60d7b5ae | |
Zbigniew Jędrzejewski-Szmek | 74dc679828 | |
Zbigniew Jędrzejewski-Szmek | 25bd358ef1 | |
Jan Synacek | eaf2f302c0 | |
Zbigniew Jędrzejewski-Szmek | ca3c77beb2 | |
Zbigniew Jędrzejewski-Szmek | b810fade77 | |
Zbigniew Jędrzejewski-Szmek | e4286e550e | |
Zbigniew Jędrzejewski-Szmek | 9286eca9c8 | |
Zbigniew Jędrzejewski-Szmek | 734f625c22 | |
Zbigniew Jędrzejewski-Szmek | 324bf560f7 | |
Zbigniew Jędrzejewski-Szmek | b69d36e571 | |
Kevin Fenzi | 04206f627a | |
Kevin Fenzi | 1eb707d840 | |
Zbigniew Jędrzejewski-Szmek | 1ec648fc4c | |
Zbigniew Jędrzejewski-Szmek | c91b73ea39 | |
Zbigniew Jędrzejewski-Szmek | 348151a546 | |
Zbigniew Jędrzejewski-Szmek | e134e692b6 | |
Zbigniew Jędrzejewski-Szmek | d81bdc27d3 | |
Zbigniew Jędrzejewski-Szmek | 523b6ce46a | |
Zbigniew Jędrzejewski-Szmek | 62b1bf52df | |
Zbigniew Jędrzejewski-Szmek | da15385b06 | |
Zbigniew Jędrzejewski-Szmek | 12da227455 | |
Zbigniew Jędrzejewski-Szmek | e42bd854c0 | |
Zbigniew Jędrzejewski-Szmek | a6473965d9 | |
Zbigniew Jędrzejewski-Szmek | 1478fab950 | |
Jan Synacek | 14572d7192 | |
Zbigniew Jędrzejewski-Szmek | 7ae71c8772 | |
Zbigniew Jędrzejewski-Szmek | 4e1286dd8b | |
Zbigniew Jędrzejewski-Szmek | 65fed72862 | |
Zbigniew Jędrzejewski-Szmek | 51f362c39a | |
Zbigniew Jędrzejewski-Szmek | 64282b85b2 | |
Zbigniew Jędrzejewski-Szmek | 839ccebd9b | |
Zbigniew Jędrzejewski-Szmek | a2242c1ded | |
Zbigniew Jędrzejewski-Szmek | 3a5d9b71f4 | |
Zbigniew Jędrzejewski-Szmek | 20fa848003 | |
Zbigniew Jędrzejewski-Szmek | 8f85f19830 | |
Zbigniew Jędrzejewski-Szmek | ef73cc0d30 | |
Zbigniew Jędrzejewski-Szmek | 3250f00573 | |
Zbigniew Jędrzejewski-Szmek | 696e2f22d4 | |
Michal Sekletar | 2666b4f578 | |
Michal Sekletar | 126aa118e1 | |
Zbigniew Jędrzejewski-Szmek | edb4e05013 | |
Adam Williamson | c418e76b87 | |
Adam Williamson | 287353c355 | |
Zbigniew Jędrzejewski-Szmek | 140d00ebaa | |
Zbigniew Jędrzejewski-Szmek | 46083abe1a | |
Zbigniew Jędrzejewski-Szmek | 6153dd9122 | |
Zbigniew Jędrzejewski-Szmek | 1ed18e5e9d | |
Zbigniew Jędrzejewski-Szmek | ee7e6a6d57 | |
Zbigniew Jędrzejewski-Szmek | 49a32c19f1 | |
Zbigniew Jędrzejewski-Szmek | abad21f221 | |
Zbigniew Jędrzejewski-Szmek | b3d8d37d58 | |
Zbigniew Jędrzejewski-Szmek | 8f6ec2ee91 | |
Zbigniew Jędrzejewski-Szmek | 8efe61bc18 | |
Zbigniew Jędrzejewski-Szmek | b7ec953f25 | |
Zbigniew Jędrzejewski-Szmek | 994aacdaa6 | |
Zbigniew Jędrzejewski-Szmek | 28e2d47eef | |
Zbigniew Jędrzejewski-Szmek | 8b4408b5c9 | |
Harald Hoyer | f7a77f9cb0 | |
Harald Hoyer | 7f4276c417 | |
Harald Hoyer | cf1399ec4a | |
Zbigniew Jędrzejewski-Szmek | b54bf1386b | |
Zbigniew Jędrzejewski-Szmek | 37de5dfe28 | |
Harald Hoyer | 253663e57d | |
Harald Hoyer | afdf3eeb86 | |
Harald Hoyer | 70cb855cd7 | |
Harald Hoyer | f9a2211aaa | |
Zbigniew Jędrzejewski-Szmek | b9a1e35039 | |
Zbigniew Jędrzejewski-Szmek | c7c4361581 | |
Zbigniew Jędrzejewski-Szmek | 43a7716012 | |
Zbigniew Jędrzejewski-Szmek | 0a19dfe97e |
|
@ -1,3 +1,4 @@
|
|||
*~
|
||||
/systemd-*/
|
||||
/.build-*.log
|
||||
/x86_64/
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
From 2e9d763e7cbeb33954bbe3f96fd94de2cd62edf7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Thu, 12 Nov 2020 14:28:24 +0100
|
||||
Subject: [PATCH] test-path-util: do not fail if the fd_is_mount_point check
|
||||
fails
|
||||
|
||||
This test fails on i686 and ppc64le in koji:
|
||||
/* test_path */
|
||||
Assertion 'fd_is_mount_point(fd, "/", 0) > 0' failed at src/test/test-path-util.c:85, function test_path(). Aborting.
|
||||
|
||||
I guess some permission error is the most likely.
|
||||
---
|
||||
src/test/test-path-util.c | 23 +++++++++++++++++------
|
||||
1 file changed, 17 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c
|
||||
index f4f8d0550b..be428334f3 100644
|
||||
--- a/src/test/test-path-util.c
|
||||
+++ b/src/test/test-path-util.c
|
||||
@@ -40,8 +40,6 @@ static void test_path_simplify(const char *in, const char *out, const char *out_
|
||||
}
|
||||
|
||||
static void test_path(void) {
|
||||
- _cleanup_close_ int fd = -1;
|
||||
-
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
test_path_compare("/goo", "/goo", 0);
|
||||
@@ -80,10 +78,6 @@ static void test_path(void) {
|
||||
assert_se(streq(basename("/aa///file..."), "file..."));
|
||||
assert_se(streq(basename("file.../"), ""));
|
||||
|
||||
- fd = open("/", O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY);
|
||||
- assert_se(fd >= 0);
|
||||
- assert_se(fd_is_mount_point(fd, "/", 0) > 0);
|
||||
-
|
||||
test_path_simplify("aaa/bbb////ccc", "aaa/bbb/ccc", "aaa/bbb/ccc");
|
||||
test_path_simplify("//aaa/.////ccc", "/aaa/./ccc", "/aaa/ccc");
|
||||
test_path_simplify("///", "/", "/");
|
||||
@@ -120,6 +114,22 @@ static void test_path(void) {
|
||||
assert_se(!path_equal_ptr(NULL, "/a"));
|
||||
}
|
||||
|
||||
+static void test_path_is_mountpoint(void) {
|
||||
+ _cleanup_close_ int fd = -1;
|
||||
+ int r;
|
||||
+
|
||||
+ log_info("/* %s */", __func__);
|
||||
+
|
||||
+ fd = open("/", O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY);
|
||||
+ assert_se(fd >= 0);
|
||||
+
|
||||
+ r = fd_is_mount_point(fd, "/", 0);
|
||||
+ if (r < 0)
|
||||
+ log_warning_errno(r, "Failed to check if / is a mount point, ignoring: %m");
|
||||
+ else
|
||||
+ assert_se(r == 1);
|
||||
+}
|
||||
+
|
||||
static void test_path_equal_root(void) {
|
||||
/* Nail down the details of how path_equal("/", ...) works. */
|
||||
|
||||
@@ -714,6 +724,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
test_print_paths();
|
||||
test_path();
|
||||
+ test_path_is_mountpoint();
|
||||
test_path_equal_root();
|
||||
test_find_executable_full();
|
||||
test_find_executable(argv[0]);
|
|
@ -0,0 +1,33 @@
|
|||
From e8bca4ba55f855260eda684a16e8feb5f20b1deb Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Thu, 12 Nov 2020 15:06:12 +0100
|
||||
Subject: [PATCH] test-path-util: ignore test failure
|
||||
|
||||
---
|
||||
src/test/test-path-util.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c
|
||||
index be428334f3..207c659b8b 100644
|
||||
--- a/src/test/test-path-util.c
|
||||
+++ b/src/test/test-path-util.c
|
||||
@@ -120,14 +120,17 @@ static void test_path_is_mountpoint(void) {
|
||||
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
+ (void) system("uname -a");
|
||||
+ (void) system("mountpoint /");
|
||||
+
|
||||
fd = open("/", O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY);
|
||||
assert_se(fd >= 0);
|
||||
|
||||
r = fd_is_mount_point(fd, "/", 0);
|
||||
if (r < 0)
|
||||
log_warning_errno(r, "Failed to check if / is a mount point, ignoring: %m");
|
||||
- else
|
||||
- assert_se(r == 1);
|
||||
+ else if (r == 0)
|
||||
+ log_warning("/ is not a mountpoint?");
|
||||
}
|
||||
|
||||
static void test_path_equal_root(void) {
|
|
@ -1,76 +0,0 @@
|
|||
From d15dd311752fcafa92d2e6a00c582020dc0f6ac3 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Fri, 12 Feb 2016 21:29:01 +0100
|
||||
Subject: [PATCH] time-util: map ALARM clockids to non-ALARM clockids in now()
|
||||
|
||||
Fixes: #2597
|
||||
(cherry picked from commit 32c1f5a57998f2a9e1992af006b83e39e3155830)
|
||||
---
|
||||
src/basic/time-util.c | 24 ++++++++++++++++++++++--
|
||||
src/libsystemd/sd-event/sd-event.c | 6 +++++-
|
||||
2 files changed, 27 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/basic/time-util.c b/src/basic/time-util.c
|
||||
index 3973850b44..510f018d9b 100644
|
||||
--- a/src/basic/time-util.c
|
||||
+++ b/src/basic/time-util.c
|
||||
@@ -42,10 +42,30 @@
|
||||
|
||||
static nsec_t timespec_load_nsec(const struct timespec *ts);
|
||||
|
||||
+static clockid_t map_clock_id(clockid_t c) {
|
||||
+
|
||||
+ /* Some more exotic archs (s390, ppc, …) lack the "ALARM" flavour of the clocks. Thus, clock_gettime() will
|
||||
+ * fail for them. Since they are essentially the same as their non-ALARM pendants (their only difference is
|
||||
+ * when timers are set on them), let's just map them accordingly. This way, we can get the correct time even on
|
||||
+ * those archs. */
|
||||
+
|
||||
+ switch (c) {
|
||||
+
|
||||
+ case CLOCK_BOOTTIME_ALARM:
|
||||
+ return CLOCK_BOOTTIME;
|
||||
+
|
||||
+ case CLOCK_REALTIME_ALARM:
|
||||
+ return CLOCK_REALTIME;
|
||||
+
|
||||
+ default:
|
||||
+ return c;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
usec_t now(clockid_t clock_id) {
|
||||
struct timespec ts;
|
||||
|
||||
- assert_se(clock_gettime(clock_id, &ts) == 0);
|
||||
+ assert_se(clock_gettime(map_clock_id(clock_id), &ts) == 0);
|
||||
|
||||
return timespec_load(&ts);
|
||||
}
|
||||
@@ -53,7 +73,7 @@ usec_t now(clockid_t clock_id) {
|
||||
nsec_t now_nsec(clockid_t clock_id) {
|
||||
struct timespec ts;
|
||||
|
||||
- assert_se(clock_gettime(clock_id, &ts) == 0);
|
||||
+ assert_se(clock_gettime(map_clock_id(clock_id), &ts) == 0);
|
||||
|
||||
return timespec_load_nsec(&ts);
|
||||
}
|
||||
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
|
||||
index deef6ba9d3..2b46a1ff06 100644
|
||||
--- a/src/libsystemd/sd-event/sd-event.c
|
||||
+++ b/src/libsystemd/sd-event/sd-event.c
|
||||
@@ -2780,9 +2780,13 @@ _public_ int sd_event_now(sd_event *e, clockid_t clock, uint64_t *usec) {
|
||||
*usec = e->timestamp.monotonic;
|
||||
break;
|
||||
|
||||
- default:
|
||||
+ case CLOCK_BOOTTIME:
|
||||
+ case CLOCK_BOOTTIME_ALARM:
|
||||
*usec = e->timestamp_boottime;
|
||||
break;
|
||||
+
|
||||
+ default:
|
||||
+ assert_not_reached("Unknown clock?");
|
||||
}
|
||||
|
||||
return 0;
|
|
@ -1,24 +0,0 @@
|
|||
From 3e1d3577dd20a49d6eb5007c65b4efb7862df903 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Fri, 12 Feb 2016 21:33:39 +0100
|
||||
Subject: [PATCH] core: fix indenting in dump output
|
||||
|
||||
Fixes: #2593
|
||||
(cherry picked from commit b895d15511526b7046c8c51e6689684144a63ae0)
|
||||
---
|
||||
src/core/unit.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/core/unit.c b/src/core/unit.c
|
||||
index d39e3dcaeb..3c4f85e744 100644
|
||||
--- a/src/core/unit.c
|
||||
+++ b/src/core/unit.c
|
||||
@@ -888,7 +888,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
|
||||
"%s\tInstance: %s\n"
|
||||
"%s\tUnit Load State: %s\n"
|
||||
"%s\tUnit Active State: %s\n"
|
||||
- "%s\nState Change Timestamp: %s\n"
|
||||
+ "%s\tState Change Timestamp: %s\n"
|
||||
"%s\tInactive Exit Timestamp: %s\n"
|
||||
"%s\tActive Enter Timestamp: %s\n"
|
||||
"%s\tActive Exit Timestamp: %s\n"
|
|
@ -1,238 +0,0 @@
|
|||
From 66a35872a2429a095f8cdfd5b00f94d0b28daa0f Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Mon, 15 Feb 2016 22:50:01 +0100
|
||||
Subject: [PATCH] networkd: FIONREAD is not reliable on some sockets
|
||||
|
||||
Fixes: #2457
|
||||
(cherry picked from commit 4edc2c9b6b5b921873eb82e58719ed4d9e0d69bf)
|
||||
---
|
||||
src/basic/socket-util.c | 34 ++++++++++++++++++++++++++++++++
|
||||
src/basic/socket-util.h | 2 ++
|
||||
src/libsystemd-network/sd-dhcp-client.c | 23 +++++++++------------
|
||||
src/libsystemd-network/sd-dhcp-server.c | 9 ++++-----
|
||||
src/libsystemd-network/sd-dhcp6-client.c | 13 ++++++------
|
||||
src/libsystemd-network/sd-ndisc.c | 13 +++++-------
|
||||
src/resolve/resolved-manager.c | 10 ++++------
|
||||
7 files changed, 64 insertions(+), 40 deletions(-)
|
||||
|
||||
diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c
|
||||
index 49e5f5b125..58512686e3 100644
|
||||
--- a/src/basic/socket-util.c
|
||||
+++ b/src/basic/socket-util.c
|
||||
@@ -936,3 +936,37 @@ int receive_one_fd(int transport_fd, int flags) {
|
||||
|
||||
return *(int*) CMSG_DATA(found);
|
||||
}
|
||||
+
|
||||
+ssize_t next_datagram_size_fd(int fd) {
|
||||
+ ssize_t l;
|
||||
+ int k;
|
||||
+
|
||||
+ /* This is a bit like FIONREAD/SIOCINQ, however a bit more powerful. The difference being: recv(MSG_PEEK) will
|
||||
+ * actually cause the next datagram in the queue to be validated regarding checksums, which FIONREAD dosn't
|
||||
+ * do. This difference is actually of major importance as we need to be sure that the size returned here
|
||||
+ * actually matches what we will read with recvmsg() next, as otherwise we might end up allocating a buffer of
|
||||
+ * the wrong size. */
|
||||
+
|
||||
+ l = recv(fd, NULL, 0, MSG_PEEK|MSG_TRUNC);
|
||||
+ if (l < 0) {
|
||||
+ if (errno == EOPNOTSUPP)
|
||||
+ goto fallback;
|
||||
+
|
||||
+ return -errno;
|
||||
+ }
|
||||
+ if (l == 0)
|
||||
+ goto fallback;
|
||||
+
|
||||
+ return l;
|
||||
+
|
||||
+fallback:
|
||||
+ k = 0;
|
||||
+
|
||||
+ /* Some sockets (AF_PACKET) do not support null-sized recv() with MSG_TRUNC set, let's fall back to FIONREAD
|
||||
+ * for them. Checksums don't matter for raw sockets anyway, hence this should be fine. */
|
||||
+
|
||||
+ if (ioctl(fd, FIONREAD, &k) < 0)
|
||||
+ return -errno;
|
||||
+
|
||||
+ return (ssize_t) k;
|
||||
+}
|
||||
diff --git a/src/basic/socket-util.h b/src/basic/socket-util.h
|
||||
index 92edc1dc22..d17a2f35f8 100644
|
||||
--- a/src/basic/socket-util.h
|
||||
+++ b/src/basic/socket-util.h
|
||||
@@ -133,5 +133,7 @@ int send_one_fd_sa(int transport_fd,
|
||||
#define send_one_fd(transport_fd, fd, flags) send_one_fd_sa(transport_fd, fd, NULL, 0, flags)
|
||||
int receive_one_fd(int transport_fd, int flags);
|
||||
|
||||
+ssize_t next_datagram_size_fd(int fd);
|
||||
+
|
||||
#define CMSG_FOREACH(cmsg, mh) \
|
||||
for ((cmsg) = CMSG_FIRSTHDR(mh); (cmsg); (cmsg) = CMSG_NXTHDR((mh), (cmsg)))
|
||||
diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c
|
||||
index cad1a52c09..729ef880ce 100644
|
||||
--- a/src/libsystemd-network/sd-dhcp-client.c
|
||||
+++ b/src/libsystemd-network/sd-dhcp-client.c
|
||||
@@ -1525,20 +1525,17 @@ static int client_receive_message_udp(sd_event_source *s, int fd,
|
||||
uint32_t revents, void *userdata) {
|
||||
sd_dhcp_client *client = userdata;
|
||||
_cleanup_free_ DHCPMessage *message = NULL;
|
||||
- int buflen = 0, len, r;
|
||||
const struct ether_addr zero_mac = { { 0, 0, 0, 0, 0, 0 } };
|
||||
const struct ether_addr *expected_chaddr = NULL;
|
||||
uint8_t expected_hlen = 0;
|
||||
+ ssize_t len, buflen;
|
||||
|
||||
assert(s);
|
||||
assert(client);
|
||||
|
||||
- r = ioctl(fd, FIONREAD, &buflen);
|
||||
- if (r < 0)
|
||||
- return -errno;
|
||||
- else if (buflen < 0)
|
||||
- /* this can't be right */
|
||||
- return -EIO;
|
||||
+ buflen = next_datagram_size_fd(fd);
|
||||
+ if (buflen < 0)
|
||||
+ return buflen;
|
||||
|
||||
message = malloc0(buflen);
|
||||
if (!message)
|
||||
@@ -1616,17 +1613,15 @@ static int client_receive_message_raw(sd_event_source *s, int fd,
|
||||
};
|
||||
struct cmsghdr *cmsg;
|
||||
bool checksum = true;
|
||||
- int buflen = 0, len, r;
|
||||
+ ssize_t buflen, len;
|
||||
+ int r;
|
||||
|
||||
assert(s);
|
||||
assert(client);
|
||||
|
||||
- r = ioctl(fd, FIONREAD, &buflen);
|
||||
- if (r < 0)
|
||||
- return -errno;
|
||||
- else if (buflen < 0)
|
||||
- /* this can't be right */
|
||||
- return -EIO;
|
||||
+ buflen = next_datagram_size_fd(fd);
|
||||
+ if (buflen < 0)
|
||||
+ return buflen;
|
||||
|
||||
packet = malloc0(buflen);
|
||||
if (!packet)
|
||||
diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c
|
||||
index ad3a37b722..54ff1a3f28 100644
|
||||
--- a/src/libsystemd-network/sd-dhcp-server.c
|
||||
+++ b/src/libsystemd-network/sd-dhcp-server.c
|
||||
@@ -955,14 +955,13 @@ static int server_receive_message(sd_event_source *s, int fd,
|
||||
.msg_controllen = sizeof(cmsgbuf),
|
||||
};
|
||||
struct cmsghdr *cmsg;
|
||||
- int buflen = 0, len;
|
||||
+ ssize_t buflen, len;
|
||||
|
||||
assert(server);
|
||||
|
||||
- if (ioctl(fd, FIONREAD, &buflen) < 0)
|
||||
- return -errno;
|
||||
- else if (buflen < 0)
|
||||
- return -EIO;
|
||||
+ buflen = next_datagram_size_fd(fd);
|
||||
+ if (buflen < 0)
|
||||
+ return buflen;
|
||||
|
||||
message = malloc(buflen);
|
||||
if (!message)
|
||||
diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
|
||||
index 5b6b9cbcac..7d56d4cc60 100644
|
||||
--- a/src/libsystemd-network/sd-dhcp6-client.c
|
||||
+++ b/src/libsystemd-network/sd-dhcp6-client.c
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "in-addr-util.h"
|
||||
#include "network-internal.h"
|
||||
#include "random-util.h"
|
||||
+#include "socket-util.h"
|
||||
#include "string-table.h"
|
||||
#include "util.h"
|
||||
|
||||
@@ -891,18 +892,16 @@ static int client_receive_message(sd_event_source *s, int fd, uint32_t revents,
|
||||
sd_dhcp6_client *client = userdata;
|
||||
DHCP6_CLIENT_DONT_DESTROY(client);
|
||||
_cleanup_free_ DHCP6Message *message = NULL;
|
||||
- int r, buflen, len;
|
||||
+ ssize_t buflen, len;
|
||||
+ int r = 0;
|
||||
|
||||
assert(s);
|
||||
assert(client);
|
||||
assert(client->event);
|
||||
|
||||
- r = ioctl(fd, FIONREAD, &buflen);
|
||||
- if (r < 0)
|
||||
- return -errno;
|
||||
- else if (buflen < 0)
|
||||
- /* This really should not happen */
|
||||
- return -EIO;
|
||||
+ buflen = next_datagram_size_fd(fd);
|
||||
+ if (buflen < 0)
|
||||
+ return buflen;
|
||||
|
||||
message = malloc(buflen);
|
||||
if (!message)
|
||||
diff --git a/src/libsystemd-network/sd-ndisc.c b/src/libsystemd-network/sd-ndisc.c
|
||||
index 519d2aa36b..bae6a49fe6 100644
|
||||
--- a/src/libsystemd-network/sd-ndisc.c
|
||||
+++ b/src/libsystemd-network/sd-ndisc.c
|
||||
@@ -491,19 +491,16 @@ static int ndisc_router_advertisment_recv(sd_event_source *s, int fd, uint32_t r
|
||||
struct cmsghdr *cmsg;
|
||||
struct in6_addr *gw;
|
||||
unsigned lifetime;
|
||||
- ssize_t len;
|
||||
- int r, pref, stateful, buflen = 0;
|
||||
+ ssize_t len, buflen;
|
||||
+ int r, pref, stateful;
|
||||
|
||||
assert(s);
|
||||
assert(nd);
|
||||
assert(nd->event);
|
||||
|
||||
- r = ioctl(fd, FIONREAD, &buflen);
|
||||
- if (r < 0)
|
||||
- return -errno;
|
||||
- else if (buflen < 0)
|
||||
- /* This really should not happen */
|
||||
- return -EIO;
|
||||
+ buflen = next_datagram_size_fd(fd);
|
||||
+ if (buflen < 0)
|
||||
+ return buflen;
|
||||
|
||||
iov.iov_len = buflen;
|
||||
|
||||
diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c
|
||||
index bf5efe4cfa..7f9073448a 100644
|
||||
--- a/src/resolve/resolved-manager.c
|
||||
+++ b/src/resolve/resolved-manager.c
|
||||
@@ -617,18 +617,16 @@ int manager_recv(Manager *m, int fd, DnsProtocol protocol, DnsPacket **ret) {
|
||||
struct msghdr mh = {};
|
||||
struct cmsghdr *cmsg;
|
||||
struct iovec iov;
|
||||
- int ms = 0, r;
|
||||
- ssize_t l;
|
||||
+ ssize_t ms, l;
|
||||
+ int r;
|
||||
|
||||
assert(m);
|
||||
assert(fd >= 0);
|
||||
assert(ret);
|
||||
|
||||
- r = ioctl(fd, FIONREAD, &ms);
|
||||
- if (r < 0)
|
||||
- return -errno;
|
||||
+ ms = next_datagram_size_fd(fd);
|
||||
if (ms < 0)
|
||||
- return -EIO;
|
||||
+ return ms;
|
||||
|
||||
r = dns_packet_new(&p, protocol, ms);
|
||||
if (r < 0)
|
|
@ -1,55 +0,0 @@
|
|||
From 1b8cc9fb6cac9d5882ab33b79f880d03d1859efb Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Mon, 15 Feb 2016 19:11:18 +0100
|
||||
Subject: [PATCH] networkd: rework idle detection logic of networkd
|
||||
|
||||
This patch makes networkd stay around as long as there is more than just a
|
||||
loopback interface around, or the loopback device isn't fully probed yet, or
|
||||
the loopback device has a .network file attached.
|
||||
|
||||
In essence, this means networkd stays around now continously as it should,
|
||||
unless it is running in some (container?) environment that really has no
|
||||
interface except a loopback device.
|
||||
|
||||
Fixes #2577.
|
||||
|
||||
(cherry picked from commit 9dc907f9c93636cb63ca90300fa3b8c03812701f)
|
||||
---
|
||||
src/network/networkd-manager.c | 19 ++++++++-----------
|
||||
1 file changed, 8 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
|
||||
index b527191a5a..b8cb7f875d 100644
|
||||
--- a/src/network/networkd-manager.c
|
||||
+++ b/src/network/networkd-manager.c
|
||||
@@ -1091,22 +1091,19 @@ static bool manager_check_idle(void *userdata) {
|
||||
|
||||
assert(m);
|
||||
|
||||
+ /* Check whether we are idle now. The only case when we decide to be idle is when there's only a loopback
|
||||
+ * device around, for which we have no configuration, and which already left the PENDING state. In all other
|
||||
+ * cases we are not idle. */
|
||||
+
|
||||
HASHMAP_FOREACH(link, m->links, i) {
|
||||
- /* we are not woken on udev activity, so let's just wait for the
|
||||
- * pending udev event */
|
||||
+ /* We are not woken on udev activity, so let's just wait for the pending udev event */
|
||||
if (link->state == LINK_STATE_PENDING)
|
||||
return false;
|
||||
|
||||
- if (!link->network)
|
||||
- continue;
|
||||
+ if ((link->flags & IFF_LOOPBACK) == 0)
|
||||
+ return false;
|
||||
|
||||
- /* we are not woken on netork activity, so let's stay around */
|
||||
- if (link_lldp_enabled(link) ||
|
||||
- link_ipv4ll_enabled(link) ||
|
||||
- link_dhcp4_server_enabled(link) ||
|
||||
- link_dhcp4_enabled(link) ||
|
||||
- link_dhcp6_enabled(link) ||
|
||||
- link_ipv6_accept_ra_enabled(link))
|
||||
+ if (link->network)
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
From 84494c062524f39771cc9363597daa29d5d041b6 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Tue, 16 Feb 2016 13:18:36 +0100
|
||||
Subject: [PATCH] core: fix assertion check
|
||||
|
||||
Fixes: #2632
|
||||
(cherry picked from commit 3f51aec8647fe13f4b1e46b2f75ff635403adf91)
|
||||
---
|
||||
src/core/timer.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/core/timer.c b/src/core/timer.c
|
||||
index 6f3e6a8db3..3d0bae16e5 100644
|
||||
--- a/src/core/timer.c
|
||||
+++ b/src/core/timer.c
|
||||
@@ -334,7 +334,7 @@ static void add_random(Timer *t, usec_t *v) {
|
||||
usec_t add;
|
||||
|
||||
assert(t);
|
||||
- assert(*v);
|
||||
+ assert(v);
|
||||
|
||||
if (t->random_usec == 0)
|
||||
return;
|
|
@ -1,26 +0,0 @@
|
|||
From 19bc96f7cdda48ca331d5cb0060d3a7eaad59a16 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Tue, 16 Feb 2016 14:03:47 +0100
|
||||
Subject: [PATCH] udev: fix cg_unified() return code checking
|
||||
|
||||
Fixes fall-out from 8b3aa503c171acdb9ec63484a8c50e2680d31e79.
|
||||
|
||||
Fixes: #2635
|
||||
(cherry picked from commit 6d2353394fc33e923d1ab464c8f88df2a5105ffb)
|
||||
---
|
||||
src/udev/udevd.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
||||
index 2c1c4a967b..bb92f16352 100644
|
||||
--- a/src/udev/udevd.c
|
||||
+++ b/src/udev/udevd.c
|
||||
@@ -1715,7 +1715,7 @@ int main(int argc, char *argv[]) {
|
||||
by PID1. otherwise we are not guaranteed to have a dedicated cgroup */
|
||||
r = cg_pid_get_path(SYSTEMD_CGROUP_CONTROLLER, 0, &cgroup);
|
||||
if (r < 0) {
|
||||
- if (r == -ENOENT || r == -ENOEXEC)
|
||||
+ if (r == -ENOENT || r == -ENOMEDIUM)
|
||||
log_debug_errno(r, "did not find dedicated cgroup: %m");
|
||||
else
|
||||
log_warning_errno(r, "failed to get cgroup: %m");
|
|
@ -1,54 +0,0 @@
|
|||
From 31acc428d9bfa04582ca7c5ec3580ef2b7aed172 Mon Sep 17 00:00:00 2001
|
||||
From: Evgeny Vereshchagin <evvers@ya.ru>
|
||||
Date: Wed, 17 Feb 2016 22:32:36 +0000
|
||||
Subject: [PATCH] core: revert "core: resolve specifier in config_parse_exec()"
|
||||
|
||||
This reverts commit cb48dfca6a8bc15d9081651001a16bf51e03838a.
|
||||
|
||||
Exec*-settings resolve specifiers twice:
|
||||
%%U -> config_parse_exec [cb48dfca6a8] -> %U -> service_spawn -> 0
|
||||
|
||||
Fixes #2637
|
||||
|
||||
(cherry picked from commit bd1b973fb326e9b7587494fd6108e5ded46e9163)
|
||||
---
|
||||
src/core/load-fragment.c | 11 +----------
|
||||
1 file changed, 1 insertion(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
|
||||
index b3dec7b8cc..8804b3ac41 100644
|
||||
--- a/src/core/load-fragment.c
|
||||
+++ b/src/core/load-fragment.c
|
||||
@@ -574,9 +574,7 @@ int config_parse_exec(
|
||||
void *data,
|
||||
void *userdata) {
|
||||
|
||||
- _cleanup_free_ char *cmd = NULL;
|
||||
ExecCommand **e = data;
|
||||
- Unit *u = userdata;
|
||||
const char *p;
|
||||
bool semicolon;
|
||||
int r;
|
||||
@@ -585,7 +583,6 @@ int config_parse_exec(
|
||||
assert(lvalue);
|
||||
assert(rvalue);
|
||||
assert(e);
|
||||
- assert(u);
|
||||
|
||||
e += ltype;
|
||||
rvalue += strspn(rvalue, WHITESPACE);
|
||||
@@ -596,13 +593,7 @@ int config_parse_exec(
|
||||
return 0;
|
||||
}
|
||||
|
||||
- r = unit_full_printf(u, rvalue, &cmd);
|
||||
- if (r < 0) {
|
||||
- log_syntax(unit, LOG_ERR, filename, line, r, "Failed to resolve unit specifiers on %s, ignoring: %m", rvalue);
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
- p = cmd;
|
||||
+ p = rvalue;
|
||||
do {
|
||||
_cleanup_free_ char *path = NULL, *firstword = NULL;
|
||||
bool separate_argv0 = false, ignore = false;
|
|
@ -1,25 +0,0 @@
|
|||
From 3ea302d20b1c60f469ed7315611d002a0d88f57d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Thu, 18 Feb 2016 21:54:31 -0500
|
||||
Subject: [PATCH] activate: fix -E option parsing
|
||||
|
||||
Fixes #2658.
|
||||
|
||||
(cherry picked from commit b722348d050aa2754cd9f903e8c3ce810c616b06)
|
||||
---
|
||||
src/activate/activate.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/activate/activate.c b/src/activate/activate.c
|
||||
index 0db4967edb..4b3d0e5371 100644
|
||||
--- a/src/activate/activate.c
|
||||
+++ b/src/activate/activate.c
|
||||
@@ -379,7 +379,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
assert(argc >= 0);
|
||||
assert(argv);
|
||||
|
||||
- while ((c = getopt_long(argc, argv, "+hl:aEd", options, NULL)) >= 0)
|
||||
+ while ((c = getopt_long(argc, argv, "+hl:aE:d", options, NULL)) >= 0)
|
||||
switch(c) {
|
||||
case 'h':
|
||||
help();
|
|
@ -1,30 +0,0 @@
|
|||
From 328e8daf82c4e82ebcd06ae87bb825d5060cb94b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Thu, 18 Feb 2016 17:33:10 -0500
|
||||
Subject: [PATCH] basic/strbuf: do not call bsearch with a null argument
|
||||
|
||||
Das ist verboten!
|
||||
|
||||
src/basic/strbuf.c:162:23: runtime error: null pointer passed as argument 2,
|
||||
which is declared to never be null
|
||||
|
||||
(cherry picked from commit 82501b3fc40dae2660a86ab07462f33fe26347ad)
|
||||
---
|
||||
src/basic/strbuf.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/src/basic/strbuf.c b/src/basic/strbuf.c
|
||||
index 77220c0251..dac2881603 100644
|
||||
--- a/src/basic/strbuf.c
|
||||
+++ b/src/basic/strbuf.c
|
||||
@@ -156,6 +156,10 @@ ssize_t strbuf_add_string(struct strbuf *str, const char *s, size_t len) {
|
||||
return off;
|
||||
}
|
||||
|
||||
+ /* bsearch is not allowed on a NULL sequence */
|
||||
+ if (node->children_count == 0)
|
||||
+ break;
|
||||
+
|
||||
/* lookup child node */
|
||||
c = s[len - 1 - depth];
|
||||
search.c = c;
|
|
@ -1,30 +0,0 @@
|
|||
From 28c6938992e05238fa077ff820015bb37e1ecae6 Mon Sep 17 00:00:00 2001
|
||||
From: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
|
||||
Date: Fri, 19 Feb 2016 15:21:18 +0100
|
||||
Subject: [PATCH] udev/path_id: correct segmentation fault due to missing NULL
|
||||
check
|
||||
|
||||
Running "udevadm test-builtin path_id /sys/devices/platform/" results
|
||||
in a segmentation fault.
|
||||
|
||||
The problem is that udev_device_get_subsystem(dev) might return NULL
|
||||
in a streq() call. Solve this problem by using streq_ptr() instead.
|
||||
|
||||
(cherry picked from commit 5181ab917d6407cb57043e98955f0de1614366ea)
|
||||
---
|
||||
src/udev/udev-builtin-path_id.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
|
||||
index b6ed45d8ba..6e9adc6e96 100644
|
||||
--- a/src/udev/udev-builtin-path_id.c
|
||||
+++ b/src/udev/udev-builtin-path_id.c
|
||||
@@ -712,7 +712,7 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
|
||||
* devices do not expose their buses and do not provide a unique
|
||||
* and predictable name that way.
|
||||
*/
|
||||
- if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport)
|
||||
+ if (streq_ptr(udev_device_get_subsystem(dev), "block") && !supported_transport)
|
||||
path = mfree(path);
|
||||
|
||||
if (path != NULL) {
|
|
@ -1,27 +0,0 @@
|
|||
From 319dadd4b39ed03271848ca649e4d76de0fbf8ff Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Sun, 21 Feb 2016 22:27:01 +0100
|
||||
Subject: [PATCH] networkd: make sure we allocate the NTA set before we add
|
||||
items to it
|
||||
|
||||
See: #2683
|
||||
(cherry picked from commit cbbf38aefc7a3d18d68f0d8fffb6b59d77948690)
|
||||
---
|
||||
src/network/networkd-network.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
|
||||
index 4315790093..54f76fe206 100644
|
||||
--- a/src/network/networkd-network.c
|
||||
+++ b/src/network/networkd-network.c
|
||||
@@ -994,6 +994,10 @@ int config_parse_dnssec_negative_trust_anchors(
|
||||
continue;
|
||||
}
|
||||
|
||||
+ r = set_ensure_allocated(&n->dnssec_negative_trust_anchors, &dns_name_hash_ops);
|
||||
+ if (r < 0)
|
||||
+ return log_oom();
|
||||
+
|
||||
r = set_put(n->dnssec_negative_trust_anchors, w);
|
||||
if (r < 0)
|
||||
return log_oom();
|
|
@ -1,70 +0,0 @@
|
|||
From f432f7f9037833d77e6e0d16c275b950e1cd8e03 Mon Sep 17 00:00:00 2001
|
||||
From: Susant Sahani <ssahani@gmail.com>
|
||||
Date: Sat, 20 Feb 2016 18:03:31 +0530
|
||||
Subject: [PATCH] networkd: tunnel fix tunnel address
|
||||
|
||||
this fixes 2655
|
||||
|
||||
(cherry picked from commit 07dcb085893a2fe212b7e158028725876d2ab98f)
|
||||
---
|
||||
src/network/networkd-netdev-tunnel.c | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/network/networkd-netdev-tunnel.c b/src/network/networkd-netdev-tunnel.c
|
||||
index 46ff2974f4..7aaa041ba3 100644
|
||||
--- a/src/network/networkd-netdev-tunnel.c
|
||||
+++ b/src/network/networkd-netdev-tunnel.c
|
||||
@@ -54,7 +54,7 @@ static int netdev_ipip_fill_message_create(NetDev *netdev, Link *link, sd_netlin
|
||||
assert(link);
|
||||
assert(m);
|
||||
assert(t);
|
||||
- assert(t->family == AF_INET || t->family != -1);
|
||||
+ assert(IN_SET(t->family, AF_INET, AF_UNSPEC));
|
||||
|
||||
r = sd_netlink_message_append_u32(m, IFLA_IPTUN_LINK, link->ifindex);
|
||||
if (r < 0)
|
||||
@@ -87,7 +87,7 @@ static int netdev_sit_fill_message_create(NetDev *netdev, Link *link, sd_netlink
|
||||
assert(link);
|
||||
assert(m);
|
||||
assert(t);
|
||||
- assert(t->family == AF_INET || t->family != -1);
|
||||
+ assert(IN_SET(t->family, AF_INET, AF_UNSPEC));
|
||||
|
||||
r = sd_netlink_message_append_u32(m, IFLA_IPTUN_LINK, link->ifindex);
|
||||
if (r < 0)
|
||||
@@ -124,7 +124,7 @@ static int netdev_gre_fill_message_create(NetDev *netdev, Link *link, sd_netlink
|
||||
t = GRETAP(netdev);
|
||||
|
||||
assert(t);
|
||||
- assert(t->family == AF_INET || t->family != -1);
|
||||
+ assert(IN_SET(t->family, AF_INET, AF_UNSPEC));
|
||||
assert(link);
|
||||
assert(m);
|
||||
|
||||
@@ -497,7 +497,7 @@ static void ipip_init(NetDev *n) {
|
||||
assert(t);
|
||||
|
||||
t->pmtudisc = true;
|
||||
- t->family = -1;
|
||||
+ t->family = AF_UNSPEC;
|
||||
}
|
||||
|
||||
static void sit_init(NetDev *n) {
|
||||
@@ -507,7 +507,7 @@ static void sit_init(NetDev *n) {
|
||||
assert(t);
|
||||
|
||||
t->pmtudisc = true;
|
||||
- t->family = -1;
|
||||
+ t->family = AF_UNSPEC;
|
||||
}
|
||||
|
||||
static void vti_init(NetDev *n) {
|
||||
@@ -538,7 +538,7 @@ static void gre_init(NetDev *n) {
|
||||
assert(t);
|
||||
|
||||
t->pmtudisc = true;
|
||||
- t->family = -1;
|
||||
+ t->family = AF_UNSPEC;
|
||||
}
|
||||
|
||||
static void ip6gre_init(NetDev *n) {
|
|
@ -1,47 +0,0 @@
|
|||
From 182b69ec5eade7b2accc09d58128b6d286067299 Mon Sep 17 00:00:00 2001
|
||||
From: Hristo Venev <hristo@venev.name>
|
||||
Date: Mon, 22 Feb 2016 08:02:48 -0500
|
||||
Subject: [PATCH] calendarspec: fix find_next skipping times
|
||||
|
||||
reset usec when bumping hours/minutes
|
||||
|
||||
(cherry picked from commit a022d76e6a7c711954be5535e6308d0a470e232a)
|
||||
---
|
||||
src/basic/calendarspec.c | 4 ++--
|
||||
src/test/test-calendarspec.c | 1 +
|
||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/basic/calendarspec.c b/src/basic/calendarspec.c
|
||||
index 775879076d..ac7b7c4c87 100644
|
||||
--- a/src/basic/calendarspec.c
|
||||
+++ b/src/basic/calendarspec.c
|
||||
@@ -1027,7 +1027,7 @@ static int find_next(const CalendarSpec *spec, struct tm *tm, usec_t *usec) {
|
||||
|
||||
r = find_matching_component(spec->hour, &c.tm_hour);
|
||||
if (r > 0)
|
||||
- c.tm_min = c.tm_sec = 0;
|
||||
+ c.tm_min = c.tm_sec = tm_usec = 0;
|
||||
if (r < 0 || tm_out_of_bounds(&c, spec->utc)) {
|
||||
c.tm_mday ++;
|
||||
c.tm_hour = c.tm_min = c.tm_sec = tm_usec = 0;
|
||||
@@ -1036,7 +1036,7 @@ static int find_next(const CalendarSpec *spec, struct tm *tm, usec_t *usec) {
|
||||
|
||||
r = find_matching_component(spec->minute, &c.tm_min);
|
||||
if (r > 0)
|
||||
- c.tm_sec = 0;
|
||||
+ c.tm_sec = tm_usec = 0;
|
||||
if (r < 0 || tm_out_of_bounds(&c, spec->utc)) {
|
||||
c.tm_hour ++;
|
||||
c.tm_min = c.tm_sec = tm_usec = 0;
|
||||
diff --git a/src/test/test-calendarspec.c b/src/test/test-calendarspec.c
|
||||
index 8754cb3381..5a8c6cbfb6 100644
|
||||
--- a/src/test/test-calendarspec.c
|
||||
+++ b/src/test/test-calendarspec.c
|
||||
@@ -137,6 +137,7 @@ int main(int argc, char* argv[]) {
|
||||
test_next("2015-11-13 09:11:23.42", "EET", 12345, 1447398683420000);
|
||||
test_next("2015-11-13 09:11:23.42/1.77", "EET", 1447398683420000, 1447398685190000);
|
||||
test_next("2015-11-13 09:11:23.42/1.77", "EET", 1447398683419999, 1447398683420000);
|
||||
+ test_next("Sun 16:00:00", "CET", 1456041600123456, 1456066800000000);
|
||||
|
||||
assert_se(calendar_spec_from_string("test", &c) < 0);
|
||||
assert_se(calendar_spec_from_string("", &c) < 0);
|
|
@ -1,52 +0,0 @@
|
|||
From 3d08427e07af2419f542c3786db2e78f0ed7c282 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Thu, 18 Feb 2016 22:51:23 +0100
|
||||
Subject: [PATCH] core: exclude .slice units from "systemctl isolate"
|
||||
|
||||
Fixes: #1969
|
||||
(cherry picked from commit 1b4cd0cf11feb7d41f2eff17f86fa55b31bb6841)
|
||||
---
|
||||
src/core/scope.c | 3 +--
|
||||
src/core/slice.c | 8 ++++++++
|
||||
2 files changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/core/scope.c b/src/core/scope.c
|
||||
index c5d0ecef04..361695c3f9 100644
|
||||
--- a/src/core/scope.c
|
||||
+++ b/src/core/scope.c
|
||||
@@ -50,8 +50,7 @@ static void scope_init(Unit *u) {
|
||||
assert(u->load_state == UNIT_STUB);
|
||||
|
||||
s->timeout_stop_usec = u->manager->default_timeout_stop_usec;
|
||||
-
|
||||
- UNIT(s)->ignore_on_isolate = true;
|
||||
+ u->ignore_on_isolate = true;
|
||||
}
|
||||
|
||||
static void scope_done(Unit *u) {
|
||||
diff --git a/src/core/slice.c b/src/core/slice.c
|
||||
index d65364c6f4..667f61bde5 100644
|
||||
--- a/src/core/slice.c
|
||||
+++ b/src/core/slice.c
|
||||
@@ -34,6 +34,13 @@ static const UnitActiveState state_translation_table[_SLICE_STATE_MAX] = {
|
||||
[SLICE_ACTIVE] = UNIT_ACTIVE
|
||||
};
|
||||
|
||||
+static void slice_init(Unit *u) {
|
||||
+ assert(u);
|
||||
+ assert(u->load_state == UNIT_STUB);
|
||||
+
|
||||
+ u->ignore_on_isolate = true;
|
||||
+}
|
||||
+
|
||||
static void slice_set_state(Slice *t, SliceState state) {
|
||||
SliceState old_state;
|
||||
assert(t);
|
||||
@@ -305,6 +312,7 @@ const UnitVTable slice_vtable = {
|
||||
.no_instances = true,
|
||||
.can_transient = true,
|
||||
|
||||
+ .init = slice_init,
|
||||
.load = slice_load,
|
||||
|
||||
.coldplug = slice_coldplug,
|
|
@ -1,35 +0,0 @@
|
|||
From 414c46af13efbb4b0eeb0c7d429e1941742f120e Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Blume <Thomas.Blume@suse.com>
|
||||
Date: Mon, 29 Feb 2016 10:19:01 +0100
|
||||
Subject: [PATCH] shorten hostname before checking for trailing dot
|
||||
|
||||
Shortening can lead to a hostname that has a trailing dot.
|
||||
Therefore it should be done before checking from trailing dots.
|
||||
|
||||
(cherry picked from commit 46e1a2278116e2f5067c35127ccbd8589335f734)
|
||||
---
|
||||
src/basic/hostname-util.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c
|
||||
index 7bb23448ed..123cee3125 100644
|
||||
--- a/src/basic/hostname-util.c
|
||||
+++ b/src/basic/hostname-util.c
|
||||
@@ -122,6 +122,8 @@ char* hostname_cleanup(char *s) {
|
||||
|
||||
assert(s);
|
||||
|
||||
+ strshorten(s, HOST_NAME_MAX);
|
||||
+
|
||||
for (p = s, d = s, dot = true; *p; p++) {
|
||||
if (*p == '.') {
|
||||
if (dot)
|
||||
@@ -141,8 +143,6 @@ char* hostname_cleanup(char *s) {
|
||||
else
|
||||
*d = 0;
|
||||
|
||||
- strshorten(s, HOST_NAME_MAX);
|
||||
-
|
||||
return s;
|
||||
}
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
From 270eaf14c4905a9635bd1d009cb1565cd4f3626f Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Mon, 22 Feb 2016 18:40:28 +0100
|
||||
Subject: [PATCH] hashmap: use void* and uint8_t* for generic pointers
|
||||
|
||||
As suggested by CODING_STYLE we should use "void*" as type for generic memory,
|
||||
and uint8_t* for generic bytes. Hence use that instead of "char*", which should
|
||||
really be used only for strings these days.
|
||||
|
||||
(cherry picked from commit 1a39bc8c650802630696c38e510a4a2a4c6bda92)
|
||||
---
|
||||
src/basic/hashmap.c | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/basic/hashmap.c b/src/basic/hashmap.c
|
||||
index 6f1a049d47..85b8d812b3 100644
|
||||
--- a/src/basic/hashmap.c
|
||||
+++ b/src/basic/hashmap.c
|
||||
@@ -176,7 +176,7 @@ enum HashmapType {
|
||||
};
|
||||
|
||||
struct _packed_ indirect_storage {
|
||||
- char *storage; /* where buckets and DIBs are stored */
|
||||
+ void *storage; /* where buckets and DIBs are stored */
|
||||
uint8_t hash_key[HASH_KEY_SIZE]; /* hash key; changes during resize */
|
||||
|
||||
unsigned n_entries; /* number of stored entries */
|
||||
@@ -193,7 +193,7 @@ struct direct_storage {
|
||||
/* This gives us 39 bytes on 64bit, or 35 bytes on 32bit.
|
||||
* That's room for 4 set_entries + 4 DIB bytes + 3 unused bytes on 64bit,
|
||||
* or 7 set_entries + 7 DIB bytes + 0 unused bytes on 32bit. */
|
||||
- char storage[sizeof(struct indirect_storage)];
|
||||
+ uint8_t storage[sizeof(struct indirect_storage)];
|
||||
};
|
||||
|
||||
#define DIRECT_BUCKETS(entry_t) \
|
||||
@@ -302,7 +302,7 @@ static void n_entries_dec(HashmapBase *h) {
|
||||
h->n_direct_entries--;
|
||||
}
|
||||
|
||||
-static char *storage_ptr(HashmapBase *h) {
|
||||
+static void *storage_ptr(HashmapBase *h) {
|
||||
return h->has_indirect ? h->indirect.storage
|
||||
: h->direct.storage;
|
||||
}
|
||||
@@ -347,7 +347,7 @@ static void get_hash_key(uint8_t hash_key[HASH_KEY_SIZE], bool reuse_is_ok) {
|
||||
|
||||
static struct hashmap_base_entry *bucket_at(HashmapBase *h, unsigned idx) {
|
||||
return (struct hashmap_base_entry*)
|
||||
- (storage_ptr(h) + idx * hashmap_type_info[h->type].entry_size);
|
||||
+ ((uint8_t*) storage_ptr(h) + idx * hashmap_type_info[h->type].entry_size);
|
||||
}
|
||||
|
||||
static struct plain_hashmap_entry *plain_bucket_at(Hashmap *h, unsigned idx) {
|
||||
@@ -381,7 +381,7 @@ static struct hashmap_base_entry *bucket_at_virtual(HashmapBase *h, struct swap_
|
||||
|
||||
static dib_raw_t *dib_raw_ptr(HashmapBase *h) {
|
||||
return (dib_raw_t*)
|
||||
- (storage_ptr(h) + hashmap_type_info[h->type].entry_size * n_buckets(h));
|
||||
+ ((uint8_t*) storage_ptr(h) + hashmap_type_info[h->type].entry_size * n_buckets(h));
|
||||
}
|
||||
|
||||
static unsigned bucket_distance(HashmapBase *h, unsigned idx, unsigned from) {
|
||||
@@ -1028,7 +1028,7 @@ static int hashmap_base_put_boldly(HashmapBase *h, unsigned idx,
|
||||
*/
|
||||
static int resize_buckets(HashmapBase *h, unsigned entries_add) {
|
||||
struct swap_entries swap;
|
||||
- char *new_storage;
|
||||
+ void *new_storage;
|
||||
dib_raw_t *old_dibs, *new_dibs;
|
||||
const struct hashmap_type_info *hi;
|
||||
unsigned idx, optimal_idx;
|
||||
@@ -1095,7 +1095,7 @@ static int resize_buckets(HashmapBase *h, unsigned entries_add) {
|
||||
h->indirect.n_buckets = (1U << new_shift) /
|
||||
(hi->entry_size + sizeof(dib_raw_t));
|
||||
|
||||
- old_dibs = (dib_raw_t*)(new_storage + hi->entry_size * old_n_buckets);
|
||||
+ old_dibs = (dib_raw_t*)((uint8_t*) new_storage + hi->entry_size * old_n_buckets);
|
||||
new_dibs = dib_raw_ptr(h);
|
||||
|
||||
/*
|
|
@ -1,260 +0,0 @@
|
|||
From 61596a9aac5f0d4cef3845b04d61f2dad4aa0814 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Mon, 22 Feb 2016 20:39:45 +0100
|
||||
Subject: [PATCH] resolved: fix notification iteration logic when transactions
|
||||
are completed
|
||||
|
||||
When a transaction is complete, and we notify its owners, make sure we deal
|
||||
correctly with the requesters removing themselves from the list of owners while
|
||||
we continue iterating.
|
||||
|
||||
This was previously already dealt with with transactions that require other
|
||||
transactions for DNSSEC purposes, fix this for other possibly transaction
|
||||
owners too now.
|
||||
|
||||
Since iterating through "Set" objects is not safe regarding removal of entries
|
||||
from it, rework the logic to use two Sets, and move each entry we notified from
|
||||
one set to the other set before we dispatch the notification. This move operation
|
||||
requires no additional memory, and enables us to ensure that we don't notify
|
||||
any object twice.
|
||||
|
||||
Fixes: #2676
|
||||
(cherry picked from commit 35aa04e9edf422beac3493afa555d29575b3046c)
|
||||
---
|
||||
src/basic/macro.h | 6 ++++
|
||||
src/basic/set.h | 3 ++
|
||||
src/resolve/resolved-dns-query.c | 5 +++
|
||||
src/resolve/resolved-dns-transaction.c | 62 ++++++++++++++++------------------
|
||||
src/resolve/resolved-dns-transaction.h | 6 ++--
|
||||
src/resolve/resolved-dns-zone.c | 5 +++
|
||||
6 files changed, 52 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/src/basic/macro.h b/src/basic/macro.h
|
||||
index 2695d0edb7..ab5cc97e17 100644
|
||||
--- a/src/basic/macro.h
|
||||
+++ b/src/basic/macro.h
|
||||
@@ -361,6 +361,12 @@ static inline unsigned long ALIGN_POWER2(unsigned long u) {
|
||||
_found; \
|
||||
})
|
||||
|
||||
+#define SWAP_TWO(x, y) do { \
|
||||
+ typeof(x) _t = (x); \
|
||||
+ (x) = (y); \
|
||||
+ (y) = (_t); \
|
||||
+ } while (false)
|
||||
+
|
||||
/* Define C11 thread_local attribute even on older gcc compiler
|
||||
* version */
|
||||
#ifndef thread_local
|
||||
diff --git a/src/basic/set.h b/src/basic/set.h
|
||||
index 2bff5062da..e0d9dd001c 100644
|
||||
--- a/src/basic/set.h
|
||||
+++ b/src/basic/set.h
|
||||
@@ -126,6 +126,9 @@ int set_put_strdupv(Set *s, char **l);
|
||||
#define SET_FOREACH(e, s, i) \
|
||||
for ((i) = ITERATOR_FIRST; set_iterate((s), &(i), (void**)&(e)); )
|
||||
|
||||
+#define SET_FOREACH_MOVE(e, d, s) \
|
||||
+ for (; ({ e = set_first(s); assert_se(!e || set_move_one(d, s, e) >= 0); e; }); )
|
||||
+
|
||||
DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free);
|
||||
DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free_free);
|
||||
|
||||
diff --git a/src/resolve/resolved-dns-query.c b/src/resolve/resolved-dns-query.c
|
||||
index a378b2b7f7..2a02544eb6 100644
|
||||
--- a/src/resolve/resolved-dns-query.c
|
||||
+++ b/src/resolve/resolved-dns-query.c
|
||||
@@ -62,6 +62,7 @@ static void dns_query_candidate_stop(DnsQueryCandidate *c) {
|
||||
|
||||
while ((t = set_steal_first(c->transactions))) {
|
||||
set_remove(t->notify_query_candidates, c);
|
||||
+ set_remove(t->notify_query_candidates_done, c);
|
||||
dns_transaction_gc(t);
|
||||
}
|
||||
}
|
||||
@@ -139,6 +140,10 @@ static int dns_query_candidate_add_transaction(DnsQueryCandidate *c, DnsResource
|
||||
if (r < 0)
|
||||
goto gc;
|
||||
|
||||
+ r = set_ensure_allocated(&t->notify_query_candidates_done, NULL);
|
||||
+ if (r < 0)
|
||||
+ goto gc;
|
||||
+
|
||||
r = set_put(t->notify_query_candidates, c);
|
||||
if (r < 0)
|
||||
goto gc;
|
||||
diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c
|
||||
index d48fdd1281..4f5cbab702 100644
|
||||
--- a/src/resolve/resolved-dns-transaction.c
|
||||
+++ b/src/resolve/resolved-dns-transaction.c
|
||||
@@ -52,6 +52,7 @@ static void dns_transaction_flush_dnssec_transactions(DnsTransaction *t) {
|
||||
|
||||
while ((z = set_steal_first(t->dnssec_transactions))) {
|
||||
set_remove(z->notify_transactions, t);
|
||||
+ set_remove(z->notify_transactions_done, t);
|
||||
dns_transaction_gc(z);
|
||||
}
|
||||
}
|
||||
@@ -100,14 +101,26 @@ DnsTransaction* dns_transaction_free(DnsTransaction *t) {
|
||||
set_remove(c->transactions, t);
|
||||
set_free(t->notify_query_candidates);
|
||||
|
||||
+ while ((c = set_steal_first(t->notify_query_candidates_done)))
|
||||
+ set_remove(c->transactions, t);
|
||||
+ set_free(t->notify_query_candidates_done);
|
||||
+
|
||||
while ((i = set_steal_first(t->notify_zone_items)))
|
||||
i->probe_transaction = NULL;
|
||||
set_free(t->notify_zone_items);
|
||||
|
||||
+ while ((i = set_steal_first(t->notify_zone_items_done)))
|
||||
+ i->probe_transaction = NULL;
|
||||
+ set_free(t->notify_zone_items_done);
|
||||
+
|
||||
while ((z = set_steal_first(t->notify_transactions)))
|
||||
set_remove(z->dnssec_transactions, t);
|
||||
set_free(t->notify_transactions);
|
||||
|
||||
+ while ((z = set_steal_first(t->notify_transactions_done)))
|
||||
+ set_remove(z->dnssec_transactions, t);
|
||||
+ set_free(t->notify_transactions_done);
|
||||
+
|
||||
dns_transaction_flush_dnssec_transactions(t);
|
||||
set_free(t->dnssec_transactions);
|
||||
|
||||
@@ -128,8 +141,11 @@ bool dns_transaction_gc(DnsTransaction *t) {
|
||||
return true;
|
||||
|
||||
if (set_isempty(t->notify_query_candidates) &&
|
||||
+ set_isempty(t->notify_query_candidates_done) &&
|
||||
set_isempty(t->notify_zone_items) &&
|
||||
- set_isempty(t->notify_transactions)) {
|
||||
+ set_isempty(t->notify_zone_items_done) &&
|
||||
+ set_isempty(t->notify_transactions) &&
|
||||
+ set_isempty(t->notify_transactions_done)) {
|
||||
dns_transaction_free(t);
|
||||
return false;
|
||||
}
|
||||
@@ -266,6 +282,7 @@ static void dns_transaction_tentative(DnsTransaction *t, DnsPacket *p) {
|
||||
log_debug("We have the lexicographically larger IP address and thus lost in the conflict.");
|
||||
|
||||
t->block_gc++;
|
||||
+
|
||||
while ((z = set_first(t->notify_zone_items))) {
|
||||
/* First, make sure the zone item drops the reference
|
||||
* to us */
|
||||
@@ -284,7 +301,6 @@ void dns_transaction_complete(DnsTransaction *t, DnsTransactionState state) {
|
||||
DnsQueryCandidate *c;
|
||||
DnsZoneItem *z;
|
||||
DnsTransaction *d;
|
||||
- Iterator i;
|
||||
const char *st;
|
||||
|
||||
assert(t);
|
||||
@@ -329,39 +345,17 @@ void dns_transaction_complete(DnsTransaction *t, DnsTransactionState state) {
|
||||
* transaction isn't freed while we are still looking at it */
|
||||
t->block_gc++;
|
||||
|
||||
- SET_FOREACH(c, t->notify_query_candidates, i)
|
||||
+ SET_FOREACH_MOVE(c, t->notify_query_candidates_done, t->notify_query_candidates)
|
||||
dns_query_candidate_notify(c);
|
||||
- SET_FOREACH(z, t->notify_zone_items, i)
|
||||
- dns_zone_item_notify(z);
|
||||
+ SWAP_TWO(t->notify_query_candidates, t->notify_query_candidates_done);
|
||||
|
||||
- if (!set_isempty(t->notify_transactions)) {
|
||||
- DnsTransaction **nt;
|
||||
- unsigned j, n = 0;
|
||||
-
|
||||
- /* We need to be careful when notifying other
|
||||
- * transactions, as that might destroy other
|
||||
- * transactions in our list. Hence, in order to be
|
||||
- * able to safely iterate through the list of
|
||||
- * transactions, take a GC lock on all of them
|
||||
- * first. Then, in a second loop, notify them, but
|
||||
- * first unlock that specific transaction. */
|
||||
-
|
||||
- nt = newa(DnsTransaction*, set_size(t->notify_transactions));
|
||||
- SET_FOREACH(d, t->notify_transactions, i) {
|
||||
- nt[n++] = d;
|
||||
- d->block_gc++;
|
||||
- }
|
||||
-
|
||||
- assert(n == set_size(t->notify_transactions));
|
||||
+ SET_FOREACH_MOVE(z, t->notify_zone_items_done, t->notify_zone_items)
|
||||
+ dns_zone_item_notify(z);
|
||||
+ SWAP_TWO(t->notify_zone_items, t->notify_zone_items_done);
|
||||
|
||||
- for (j = 0; j < n; j++) {
|
||||
- if (set_contains(t->notify_transactions, nt[j]))
|
||||
- dns_transaction_notify(nt[j], t);
|
||||
-
|
||||
- nt[j]->block_gc--;
|
||||
- dns_transaction_gc(nt[j]);
|
||||
- }
|
||||
- }
|
||||
+ SET_FOREACH_MOVE(d, t->notify_transactions_done, t->notify_transactions)
|
||||
+ dns_transaction_notify(d, t);
|
||||
+ SWAP_TWO(t->notify_transactions, t->notify_transactions_done);
|
||||
|
||||
t->block_gc--;
|
||||
dns_transaction_gc(t);
|
||||
@@ -1619,6 +1613,10 @@ static int dns_transaction_add_dnssec_transaction(DnsTransaction *t, DnsResource
|
||||
if (r < 0)
|
||||
goto gc;
|
||||
|
||||
+ r = set_ensure_allocated(&aux->notify_transactions_done, NULL);
|
||||
+ if (r < 0)
|
||||
+ goto gc;
|
||||
+
|
||||
r = set_put(t->dnssec_transactions, aux);
|
||||
if (r < 0)
|
||||
goto gc;
|
||||
diff --git a/src/resolve/resolved-dns-transaction.h b/src/resolve/resolved-dns-transaction.h
|
||||
index 4617194711..fd0237d166 100644
|
||||
--- a/src/resolve/resolved-dns-transaction.h
|
||||
+++ b/src/resolve/resolved-dns-transaction.h
|
||||
@@ -119,17 +119,17 @@ struct DnsTransaction {
|
||||
/* Query candidates this transaction is referenced by and that
|
||||
* shall be notified about this specific transaction
|
||||
* completing. */
|
||||
- Set *notify_query_candidates;
|
||||
+ Set *notify_query_candidates, *notify_query_candidates_done;
|
||||
|
||||
/* Zone items this transaction is referenced by and that shall
|
||||
* be notified about completion. */
|
||||
- Set *notify_zone_items;
|
||||
+ Set *notify_zone_items, *notify_zone_items_done;
|
||||
|
||||
/* Other transactions that this transactions is referenced by
|
||||
* and that shall be notified about completion. This is used
|
||||
* when transactions want to validate their RRsets, but need
|
||||
* another DNSKEY or DS RR to do so. */
|
||||
- Set *notify_transactions;
|
||||
+ Set *notify_transactions, *notify_transactions_done;
|
||||
|
||||
/* The opposite direction: the transactions this transaction
|
||||
* created in order to request DNSKEY or DS RRs. */
|
||||
diff --git a/src/resolve/resolved-dns-zone.c b/src/resolve/resolved-dns-zone.c
|
||||
index f52383cfd1..be535cff14 100644
|
||||
--- a/src/resolve/resolved-dns-zone.c
|
||||
+++ b/src/resolve/resolved-dns-zone.c
|
||||
@@ -38,6 +38,7 @@ void dns_zone_item_probe_stop(DnsZoneItem *i) {
|
||||
i->probe_transaction = NULL;
|
||||
|
||||
set_remove(t->notify_zone_items, i);
|
||||
+ set_remove(t->notify_zone_items_done, i);
|
||||
dns_transaction_gc(t);
|
||||
}
|
||||
|
||||
@@ -186,6 +187,10 @@ static int dns_zone_item_probe_start(DnsZoneItem *i) {
|
||||
if (r < 0)
|
||||
goto gc;
|
||||
|
||||
+ r = set_ensure_allocated(&t->notify_zone_items_done, NULL);
|
||||
+ if (r < 0)
|
||||
+ goto gc;
|
||||
+
|
||||
r = set_put(t->notify_zone_items, i);
|
||||
if (r < 0)
|
||||
goto gc;
|
|
@ -1,249 +0,0 @@
|
|||
From a4feb275ce859fb63e1153cb2eb16ed276f3a96f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Tue, 1 Mar 2016 20:35:55 -0500
|
||||
Subject: [PATCH] selinux: always try to load the full selinux db
|
||||
|
||||
https://github.com/systemd/systemd/pull/2508#issuecomment-190901170
|
||||
Maybe fixes https://bugzilla.redhat.com/show_bug.cgi?id=1308771.
|
||||
|
||||
(cherry picked from commit c3dacc8bbf2dc2f5d498072418289c3ba79160ac)
|
||||
---
|
||||
src/basic/selinux-util.c | 16 ++++------------
|
||||
src/basic/selinux-util.h | 2 +-
|
||||
src/core/main.c | 2 +-
|
||||
src/hostname/hostnamed.c | 2 +-
|
||||
src/locale/localed.c | 2 +-
|
||||
src/login/logind.c | 2 +-
|
||||
src/resolve/resolved.c | 2 +-
|
||||
src/sysusers/sysusers.c | 2 +-
|
||||
src/test/test-udev.c | 2 +-
|
||||
src/timedate/timedated.c | 2 +-
|
||||
src/tmpfiles/tmpfiles.c | 2 +-
|
||||
src/udev/udevadm.c | 2 +-
|
||||
src/udev/udevd.c | 2 +-
|
||||
src/update-done/update-done.c | 2 +-
|
||||
src/user-sessions/user-sessions.c | 2 +-
|
||||
15 files changed, 18 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/src/basic/selinux-util.c b/src/basic/selinux-util.c
|
||||
index 6c63b9d652..71ceac1bcd 100644
|
||||
--- a/src/basic/selinux-util.c
|
||||
+++ b/src/basic/selinux-util.c
|
||||
@@ -80,31 +80,23 @@ void mac_selinux_retest(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
-int mac_selinux_init(const char *prefix) {
|
||||
+int mac_selinux_init(void) {
|
||||
int r = 0;
|
||||
|
||||
#ifdef HAVE_SELINUX
|
||||
usec_t before_timestamp, after_timestamp;
|
||||
struct mallinfo before_mallinfo, after_mallinfo;
|
||||
|
||||
- if (!mac_selinux_use())
|
||||
+ if (label_hnd)
|
||||
return 0;
|
||||
|
||||
- if (label_hnd)
|
||||
+ if (!mac_selinux_use())
|
||||
return 0;
|
||||
|
||||
before_mallinfo = mallinfo();
|
||||
before_timestamp = now(CLOCK_MONOTONIC);
|
||||
|
||||
- if (prefix) {
|
||||
- struct selinux_opt options[] = {
|
||||
- { .type = SELABEL_OPT_SUBSET, .value = prefix },
|
||||
- };
|
||||
-
|
||||
- label_hnd = selabel_open(SELABEL_CTX_FILE, options, ELEMENTSOF(options));
|
||||
- } else
|
||||
- label_hnd = selabel_open(SELABEL_CTX_FILE, NULL, 0);
|
||||
-
|
||||
+ label_hnd = selabel_open(SELABEL_CTX_FILE, NULL, 0);
|
||||
if (!label_hnd) {
|
||||
log_enforcing("Failed to initialize SELinux context: %m");
|
||||
r = security_getenforce() == 1 ? -errno : 0;
|
||||
diff --git a/src/basic/selinux-util.h b/src/basic/selinux-util.h
|
||||
index 27e8edb41b..ce6bc8e44c 100644
|
||||
--- a/src/basic/selinux-util.h
|
||||
+++ b/src/basic/selinux-util.h
|
||||
@@ -29,7 +29,7 @@ bool mac_selinux_use(void);
|
||||
bool mac_selinux_have(void);
|
||||
void mac_selinux_retest(void);
|
||||
|
||||
-int mac_selinux_init(const char *prefix);
|
||||
+int mac_selinux_init(void);
|
||||
void mac_selinux_finish(void);
|
||||
|
||||
int mac_selinux_fix(const char *path, bool ignore_enoent, bool ignore_erofs);
|
||||
diff --git a/src/core/main.c b/src/core/main.c
|
||||
index e2088574c0..d861960c6d 100644
|
||||
--- a/src/core/main.c
|
||||
+++ b/src/core/main.c
|
||||
@@ -1382,7 +1382,7 @@ int main(int argc, char *argv[]) {
|
||||
dual_timestamp_get(&security_finish_timestamp);
|
||||
}
|
||||
|
||||
- if (mac_selinux_init(NULL) < 0) {
|
||||
+ if (mac_selinux_init() < 0) {
|
||||
error_message = "Failed to initialize SELinux policy";
|
||||
goto finish;
|
||||
}
|
||||
diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
|
||||
index c37e32e96b..d11756e615 100644
|
||||
--- a/src/hostname/hostnamed.c
|
||||
+++ b/src/hostname/hostnamed.c
|
||||
@@ -706,7 +706,7 @@ int main(int argc, char *argv[]) {
|
||||
log_open();
|
||||
|
||||
umask(0022);
|
||||
- mac_selinux_init("/etc");
|
||||
+ mac_selinux_init();
|
||||
|
||||
if (argc != 1) {
|
||||
log_error("This program takes no arguments.");
|
||||
diff --git a/src/locale/localed.c b/src/locale/localed.c
|
||||
index f0fe59cc67..a2fc6af4c9 100644
|
||||
--- a/src/locale/localed.c
|
||||
+++ b/src/locale/localed.c
|
||||
@@ -1296,7 +1296,7 @@ int main(int argc, char *argv[]) {
|
||||
log_open();
|
||||
|
||||
umask(0022);
|
||||
- mac_selinux_init("/etc");
|
||||
+ mac_selinux_init();
|
||||
|
||||
if (argc != 1) {
|
||||
log_error("This program takes no arguments.");
|
||||
diff --git a/src/login/logind.c b/src/login/logind.c
|
||||
index 933602eb08..d5f6757bd3 100644
|
||||
--- a/src/login/logind.c
|
||||
+++ b/src/login/logind.c
|
||||
@@ -1126,7 +1126,7 @@ int main(int argc, char *argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
- r = mac_selinux_init("/run");
|
||||
+ r = mac_selinux_init();
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Could not initialize labelling: %m");
|
||||
goto finish;
|
||||
diff --git a/src/resolve/resolved.c b/src/resolve/resolved.c
|
||||
index c7e2ab14d6..161ea03412 100644
|
||||
--- a/src/resolve/resolved.c
|
||||
+++ b/src/resolve/resolved.c
|
||||
@@ -48,7 +48,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
umask(0022);
|
||||
|
||||
- r = mac_selinux_init(NULL);
|
||||
+ r = mac_selinux_init();
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "SELinux setup failed: %m");
|
||||
goto finish;
|
||||
diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
|
||||
index 863c628323..4377f1b910 100644
|
||||
--- a/src/sysusers/sysusers.c
|
||||
+++ b/src/sysusers/sysusers.c
|
||||
@@ -1820,7 +1820,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
umask(0022);
|
||||
|
||||
- r = mac_selinux_init(NULL);
|
||||
+ r = mac_selinux_init();
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "SELinux setup failed: %m");
|
||||
goto finish;
|
||||
diff --git a/src/test/test-udev.c b/src/test/test-udev.c
|
||||
index 9cc64f7c68..d01789fe08 100644
|
||||
--- a/src/test/test-udev.c
|
||||
+++ b/src/test/test-udev.c
|
||||
@@ -93,7 +93,7 @@ int main(int argc, char *argv[]) {
|
||||
return EXIT_FAILURE;
|
||||
|
||||
log_debug("version %s", VERSION);
|
||||
- mac_selinux_init("/dev");
|
||||
+ mac_selinux_init();
|
||||
|
||||
action = argv[1];
|
||||
if (action == NULL) {
|
||||
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
|
||||
index 2a10135fba..a522d0c5f9 100644
|
||||
--- a/src/timedate/timedated.c
|
||||
+++ b/src/timedate/timedated.c
|
||||
@@ -159,7 +159,7 @@ static int context_write_data_local_rtc(Context *c) {
|
||||
}
|
||||
}
|
||||
|
||||
- mac_selinux_init("/etc");
|
||||
+ mac_selinux_init();
|
||||
return write_string_file_atomic_label("/etc/adjtime", w);
|
||||
}
|
||||
|
||||
diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
|
||||
index 7b105a6bd4..f3487013cf 100644
|
||||
--- a/src/tmpfiles/tmpfiles.c
|
||||
+++ b/src/tmpfiles/tmpfiles.c
|
||||
@@ -2288,7 +2288,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
umask(0022);
|
||||
|
||||
- mac_selinux_init(NULL);
|
||||
+ mac_selinux_init();
|
||||
|
||||
items = ordered_hashmap_new(&string_hash_ops);
|
||||
globs = ordered_hashmap_new(&string_hash_ops);
|
||||
diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c
|
||||
index 7bd2c1ea42..a6a873e5de 100644
|
||||
--- a/src/udev/udevadm.c
|
||||
+++ b/src/udev/udevadm.c
|
||||
@@ -93,7 +93,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
log_parse_environment();
|
||||
log_open();
|
||||
- mac_selinux_init("/dev");
|
||||
+ mac_selinux_init();
|
||||
|
||||
while ((c = getopt_long(argc, argv, "+dhV", options, NULL)) >= 0)
|
||||
switch (c) {
|
||||
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
||||
index bb92f16352..243df7386f 100644
|
||||
--- a/src/udev/udevd.c
|
||||
+++ b/src/udev/udevd.c
|
||||
@@ -1695,7 +1695,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
umask(022);
|
||||
|
||||
- r = mac_selinux_init("/dev");
|
||||
+ r = mac_selinux_init();
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "could not initialize labelling: %m");
|
||||
goto exit;
|
||||
diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c
|
||||
index 931e583785..da306a4444 100644
|
||||
--- a/src/update-done/update-done.c
|
||||
+++ b/src/update-done/update-done.c
|
||||
@@ -101,7 +101,7 @@ int main(int argc, char *argv[]) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
- r = mac_selinux_init(NULL);
|
||||
+ r = mac_selinux_init();
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "SELinux setup failed: %m");
|
||||
goto finish;
|
||||
diff --git a/src/user-sessions/user-sessions.c b/src/user-sessions/user-sessions.c
|
||||
index 8bf44e2100..9b29b5ba1d 100644
|
||||
--- a/src/user-sessions/user-sessions.c
|
||||
+++ b/src/user-sessions/user-sessions.c
|
||||
@@ -40,7 +40,7 @@ int main(int argc, char*argv[]) {
|
||||
|
||||
umask(0022);
|
||||
|
||||
- mac_selinux_init(NULL);
|
||||
+ mac_selinux_init();
|
||||
|
||||
if (streq(argv[1], "start")) {
|
||||
int r = 0;
|
|
@ -1,45 +0,0 @@
|
|||
From 4f1ae61da9eda1115c1461e77a44101d96532700 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 2 Mar 2016 10:16:39 -0500
|
||||
Subject: [PATCH] selinux: use raw variants of security_compute_create and
|
||||
setfscreatecon
|
||||
|
||||
As suggested by Evgeny Vereshchagin as a follow up for
|
||||
https://github.com/systemd/systemd/pull/2781#issuecomment-191043402.
|
||||
|
||||
(cherry picked from commit 5c5433ad32c3d911f0c66cc124d190d40a2b5f5b)
|
||||
---
|
||||
src/basic/selinux-util.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/basic/selinux-util.c b/src/basic/selinux-util.c
|
||||
index 71ceac1bcd..5e6181f662 100644
|
||||
--- a/src/basic/selinux-util.c
|
||||
+++ b/src/basic/selinux-util.c
|
||||
@@ -217,7 +217,7 @@ int mac_selinux_get_create_label_from_exe(const char *exe, char **label) {
|
||||
return -errno;
|
||||
|
||||
sclass = string_to_security_class("process");
|
||||
- r = security_compute_create(mycon, fcon, sclass, (security_context_t *) label);
|
||||
+ r = security_compute_create_raw(mycon, fcon, sclass, (security_context_t *) label);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
#endif
|
||||
@@ -296,7 +296,7 @@ int mac_selinux_get_child_mls_label(int socket_fd, const char *exe, const char *
|
||||
return -ENOMEM;
|
||||
|
||||
sclass = string_to_security_class("process");
|
||||
- r = security_compute_create(mycon, fcon, sclass, (security_context_t *) label);
|
||||
+ r = security_compute_create_raw(mycon, fcon, sclass, (security_context_t *) label);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
#endif
|
||||
@@ -350,7 +350,7 @@ int mac_selinux_create_file_prepare(const char *path, mode_t mode) {
|
||||
|
||||
log_enforcing("Failed to determine SELinux security context for %s: %m", path);
|
||||
} else {
|
||||
- if (setfscreatecon(filecon) >= 0)
|
||||
+ if (setfscreatecon_raw(filecon) >= 0)
|
||||
return 0; /* Success! */
|
||||
|
||||
log_enforcing("Failed to set SELinux security context %s for %s: %m", filecon, path);
|
|
@ -1,51 +0,0 @@
|
|||
From 4e14900fe25c53275c7d7d0c094ddf1fd477e5ed Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Fri, 11 Mar 2016 17:06:17 -0500
|
||||
Subject: [PATCH 1/2] resolved: create /etc/resolv.conf symlink at runtime
|
||||
|
||||
If the symlink doesn't exists, and we are being started, let's
|
||||
create it to provie name resolution.
|
||||
|
||||
If it exists, do nothing. In particular, if it is a broken symlink,
|
||||
we cannot really know if the administator configured it to point to
|
||||
a location used by some service that hasn't started yet, so we
|
||||
don't touch it in that case either.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1313085
|
||||
---
|
||||
src/resolve/resolved.c | 4 ++++
|
||||
tmpfiles.d/etc.conf.m4 | 3 ---
|
||||
2 files changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/resolve/resolved.c b/src/resolve/resolved.c
|
||||
index 161ea03412..ea6750e949 100644
|
||||
--- a/src/resolve/resolved.c
|
||||
+++ b/src/resolve/resolved.c
|
||||
@@ -67,6 +67,10 @@ int main(int argc, char *argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
+ r = symlink("../run/systemd/resolve/resolv.conf", "/etc/resolv.conf");
|
||||
+ if (r < 0 && errno != EEXIST)
|
||||
+ log_warning_errno(errno, "Could not create /etc/resolv.conf symlink: %m");
|
||||
+
|
||||
r = drop_privileges(uid, gid, 0);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
diff --git a/tmpfiles.d/etc.conf.m4 b/tmpfiles.d/etc.conf.m4
|
||||
index ef7b9b9541..928105ea8d 100644
|
||||
--- a/tmpfiles.d/etc.conf.m4
|
||||
+++ b/tmpfiles.d/etc.conf.m4
|
||||
@@ -13,9 +13,6 @@ L+ /etc/mtab - - - - ../proc/self/mounts
|
||||
m4_ifdef(`HAVE_SMACK_RUN_LABEL',
|
||||
t /etc/mtab - - - - security.SMACK64=_
|
||||
)m4_dnl
|
||||
-m4_ifdef(`ENABLE_RESOLVED',
|
||||
-L! /etc/resolv.conf - - - - ../run/systemd/resolve/resolv.conf
|
||||
-)m4_dnl
|
||||
C /etc/nsswitch.conf - - - -
|
||||
m4_ifdef(`HAVE_PAM',
|
||||
C /etc/pam.d - - - -
|
||||
--
|
||||
2.7.2
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
From 15b947fb798cd131355ba9935802d58e92bdba6e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Fri, 4 Mar 2016 21:46:47 -0500
|
||||
Subject: [PATCH] test-compress-benchmark: skip loop iteration if size is 0
|
||||
|
||||
Otherwise we would hit an assert in the compression code.
|
||||
---
|
||||
src/journal/test-compress-benchmark.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/src/journal/test-compress-benchmark.c b/src/journal/test-compress-benchmark.c
|
||||
index 5b2d130cd6..0ef6d36a50 100644
|
||||
--- a/src/journal/test-compress-benchmark.c
|
||||
+++ b/src/journal/test-compress-benchmark.c
|
||||
@@ -105,6 +105,8 @@ static void test_compress_decompress(const char* label, const char* type,
|
||||
int r;
|
||||
|
||||
size = permute(i);
|
||||
+ if (size == 0)
|
||||
+ continue;
|
||||
|
||||
log_debug("%s %zu %zu", type, i, size);
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
From d9e075d88e7d9d82464147d8283771d709c14ef8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Tue, 9 Feb 2016 15:13:33 -0500
|
||||
Subject: [PATCH] Add a workaround for {linux/net}/if.h conflict
|
||||
|
||||
Include linux/if.h and make sure we don't include the other file.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1300256
|
||||
---
|
||||
src/shared/firewall-util.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/shared/firewall-util.c b/src/shared/firewall-util.c
|
||||
index 0d3da2e..c38f9cc 100644
|
||||
--- a/src/shared/firewall-util.c
|
||||
+++ b/src/shared/firewall-util.c
|
||||
@@ -16,15 +16,16 @@
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
+#define _NET_IF_H 1
|
||||
|
||||
#include <alloca.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <endian.h>
|
||||
#include <errno.h>
|
||||
-#include <net/if.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <sys/socket.h>
|
||||
+#include <linux/if.h>
|
||||
#include <linux/netfilter_ipv4/ip_tables.h>
|
||||
#include <linux/netfilter/nf_nat.h>
|
||||
#include <linux/netfilter/xt_addrtype.h>
|
||||
--
|
||||
2.5.0
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [[ ! -x /sbin/new-kernel-pkg ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
COMMAND="$1"
|
||||
KERNEL_VERSION="$2"
|
||||
BOOT_DIR_ABS="$3"
|
||||
KERNEL_IMAGE="$4"
|
||||
|
||||
KERNEL_DIR="${KERNEL_IMAGE%/*}"
|
||||
[[ "$KERNEL_VERSION" == *\+* ]] && flavor=-"${KERNEL_VERSION##*+}"
|
||||
case "$COMMAND" in
|
||||
add)
|
||||
if [[ "${KERNEL_DIR}" != "/boot" ]]; then
|
||||
for i in \
|
||||
"$KERNEL_IMAGE" \
|
||||
"$KERNEL_DIR"/System.map \
|
||||
"$KERNEL_DIR"/config \
|
||||
"$KERNEL_DIR"/zImage.stub \
|
||||
"$KERNEL_DIR"/dtb \
|
||||
; do
|
||||
[[ -e "$i" ]] || continue
|
||||
cp -aT "$i" "/boot/${i##*/}-${KERNEL_VERSION}"
|
||||
command -v restorecon &>/dev/null && \
|
||||
restorecon -R "/boot/${i##*/}-${KERNEL_VERSION}"
|
||||
done
|
||||
# hmac is .vmlinuz-<version>.hmac so needs a special treatment
|
||||
i="$KERNEL_DIR/.${KERNEL_IMAGE##*/}.hmac"
|
||||
if [[ -e "$i" ]]; then
|
||||
cp -a "$i" "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac"
|
||||
command -v restorecon &>/dev/null && \
|
||||
restorecon "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac"
|
||||
fi
|
||||
fi
|
||||
/sbin/new-kernel-pkg --package "kernel${flavor}" --install "$KERNEL_VERSION" || exit $?
|
||||
/sbin/new-kernel-pkg --package "kernel${flavor}" --mkinitrd --dracut --depmod --update "$KERNEL_VERSION" || exit $?
|
||||
/sbin/new-kernel-pkg --package "kernel${flavor}" --rpmposttrans "$KERNEL_VERSION" || exit $?
|
||||
;;
|
||||
remove)
|
||||
/sbin/new-kernel-pkg --package "kernel${flavor+-$flavor}" --rminitrd --rmmoddep --remove "$KERNEL_VERSION" || exit $?
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# skip other installation plugins, if we can't find a boot loader spec conforming setup
|
||||
if ! [[ -d /boot/loader/entries || -L /boot/loader/entries ]]; then
|
||||
exit 77
|
||||
fi
|
|
@ -1,11 +0,0 @@
|
|||
# We enable all display managers by default. Since only one can
|
||||
# actually be enabled at the same time the one which is installed
|
||||
# first wins
|
||||
|
||||
enable gdm.service
|
||||
enable lightdm.service
|
||||
enable slim.service
|
||||
enable lxdm.service
|
||||
enable sddm.service
|
||||
enable kdm.service
|
||||
enable xdm.service
|
|
@ -1,126 +0,0 @@
|
|||
# Also see:
|
||||
# https://fedoraproject.org/wiki/Starting_services_by_default
|
||||
|
||||
# On Fedora we deviate from some upstream defaults
|
||||
disable systemd-timesyncd.service
|
||||
disable systemd-networkd.service
|
||||
disable systemd-resolved.service
|
||||
|
||||
# System stuff
|
||||
enable sshd.service
|
||||
enable atd.*
|
||||
enable crond.*
|
||||
enable chronyd.service
|
||||
enable NetworkManager.service
|
||||
enable NetworkManager-dispatcher.service
|
||||
enable ModemManager.service
|
||||
enable auditd.service
|
||||
enable restorecond.service
|
||||
enable bluetooth.*
|
||||
enable avahi-daemon.*
|
||||
enable cups.*
|
||||
|
||||
# The various syslog implementations
|
||||
enable rsyslog.*
|
||||
enable syslog-ng.*
|
||||
enable sysklogd.*
|
||||
|
||||
# Network facing
|
||||
enable firewalld.service
|
||||
enable libvirtd.service
|
||||
enable xinetd.service
|
||||
enable ladvd.service
|
||||
|
||||
# Storage
|
||||
enable multipathd.service
|
||||
enable libstoragemgmt.service
|
||||
enable lvm2-monitor.*
|
||||
enable lvm2-lvmetad.*
|
||||
enable dm-event.*
|
||||
enable dmraid-activation.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=855372
|
||||
enable mdmonitor.service
|
||||
enable mdmonitor-takeover.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=876237
|
||||
enable spice-vdagentd.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=885406
|
||||
enable qemu-guest-agent.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=928726
|
||||
enable dnf-makecache.timer
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=929403
|
||||
enable initial-setup-graphical.service
|
||||
enable initial-setup-text.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=957135
|
||||
enable vmtoolsd.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=976315
|
||||
enable dkms.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=961878
|
||||
enable ipmi.service
|
||||
enable ipmievd.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1039351
|
||||
enable x509watch.timer
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1060754
|
||||
enable dnssec-triggerd.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1095353
|
||||
enable uuidd.socket
|
||||
|
||||
# Hardware
|
||||
enable gpm.*
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1066421
|
||||
enable gpsd.socket
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1141607
|
||||
enable x2gocleansessions.service
|
||||
|
||||
# https://fedoraproject.org/wiki/Changes/UEFISecureBootBlacklistUpdates
|
||||
#
|
||||
enable dbxtool.service
|
||||
|
||||
enable irqbalance.service
|
||||
enable lm_sensors.service
|
||||
enable mcelog.*
|
||||
enable acpid.*
|
||||
enable smartd.service
|
||||
enable pcscd.socket
|
||||
enable rngd.service
|
||||
|
||||
# Other stuff
|
||||
enable abrtd.service
|
||||
enable abrt-ccpp.service
|
||||
enable abrt-oops.service
|
||||
enable abrt-xorg.service
|
||||
enable abrt-vmcore.service
|
||||
enable lttng-sessiond.service
|
||||
enable ksm.service
|
||||
enable ksmtuned.service
|
||||
enable rootfs-resize.service
|
||||
enable sysstat.service
|
||||
enable sysstat-collect.timer
|
||||
enable sysstat-summary.timer
|
||||
enable uuidd.service
|
||||
enable xendomains.service
|
||||
enable xenstored.service
|
||||
enable xenconsoled.service
|
||||
|
||||
# Desktop stuff
|
||||
enable accounts-daemon.service
|
||||
enable rtkit-daemon.service
|
||||
enable upower.service
|
||||
enable udisks2.service
|
||||
enable polkit.service
|
||||
enable packagekit-offline-update.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1187072
|
||||
enable timedatex.service
|
|
@ -1 +0,0 @@
|
|||
disable *
|
|
@ -0,0 +1,129 @@
|
|||
From f58b96d3e8d1cb0dd3666bc74fa673918b586612 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Mon, 14 Sep 2020 17:58:03 +0200
|
||||
Subject: [PATCH] test-mountpointutil-util: do not assert in test_mnt_id()
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1803070
|
||||
|
||||
I *think* this a kernel bug: the mnt_id as listed in /proc/self/mountinfo is different
|
||||
than the one we get from /proc/self/fdinfo/. This only matters when both statx and
|
||||
name_to_handle_at are unavailable and we hit the fallback path that goes through fdinfo:
|
||||
|
||||
(gdb) !uname -r
|
||||
5.6.19-200.fc31.ppc64le
|
||||
|
||||
(gdb) !cat /proc/self/mountinfo
|
||||
697 664 253:0 /var/lib/mock/fedora-31-ppc64le/root / rw,relatime shared:298 master:1 - xfs /dev/mapper/fedora_rh--power--vm14-root rw,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota
|
||||
698 697 253:0 /var/cache/mock/fedora-31-ppc64le/yum_cache /var/cache/yum rw,relatime shared:299 master:1 - xfs /dev/mapper/fedora_rh--power--vm14-root rw,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota
|
||||
699 697 253:0 /var/cache/mock/fedora-31-ppc64le/dnf_cache /var/cache/dnf rw,relatime shared:300 master:1 - xfs /dev/mapper/fedora_rh--power--vm14-root rw,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota
|
||||
700 697 0:32 /mock-selinux-plugin.7me9bfpi /proc/filesystems rw,nosuid,nodev shared:301 master:18 - tmpfs tmpfs rw,seclabel <==========================================================
|
||||
701 697 0:41 / /sys ro,nosuid,nodev,noexec,relatime shared:302 - sysfs sysfs ro,seclabel
|
||||
702 701 0:21 / /sys/fs/selinux ro,nosuid,nodev,noexec,relatime shared:306 master:8 - selinuxfs selinuxfs rw
|
||||
703 697 0:42 / /dev rw,nosuid shared:303 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
704 703 0:43 / /dev/shm rw,nosuid,nodev shared:304 - tmpfs tmpfs rw,seclabel
|
||||
705 703 0:45 / /dev/pts rw,nosuid,noexec,relatime shared:307 - devpts devpts rw,seclabel,gid=5,mode=620,ptmxmode=666
|
||||
706 703 0:6 /btrfs-control /dev/btrfs-control rw,nosuid shared:308 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
707 703 0:6 /loop-control /dev/loop-control rw,nosuid shared:309 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
708 703 0:6 /loop0 /dev/loop0 rw,nosuid shared:310 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
709 703 0:6 /loop1 /dev/loop1 rw,nosuid shared:311 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
710 703 0:6 /loop10 /dev/loop10 rw,nosuid shared:312 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
711 703 0:6 /loop11 /dev/loop11 rw,nosuid shared:313 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
712 703 0:6 /loop2 /dev/loop2 rw,nosuid shared:314 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
713 703 0:6 /loop3 /dev/loop3 rw,nosuid shared:315 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
714 703 0:6 /loop4 /dev/loop4 rw,nosuid shared:316 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
715 703 0:6 /loop5 /dev/loop5 rw,nosuid shared:317 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
716 703 0:6 /loop6 /dev/loop6 rw,nosuid shared:318 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
717 703 0:6 /loop7 /dev/loop7 rw,nosuid shared:319 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
718 703 0:6 /loop8 /dev/loop8 rw,nosuid shared:320 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
719 703 0:6 /loop9 /dev/loop9 rw,nosuid shared:321 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
720 697 0:44 / /run rw,nosuid,nodev shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
721 720 0:25 /systemd/nspawn/propagate/9cc8a155d0244558b273f773d2b92142 /run/systemd/nspawn/incoming ro master:12 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
722 697 0:32 /mock-resolv.dvml91hp /etc/resolv.conf rw,nosuid,nodev shared:322 master:18 - tmpfs tmpfs rw,seclabel
|
||||
725 697 0:47 / /proc rw,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
603 725 0:47 /sys /proc/sys ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
604 725 0:44 /systemd/inaccessible/reg /proc/kallsyms ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
605 725 0:44 /systemd/inaccessible/reg /proc/kcore ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
606 725 0:44 /systemd/inaccessible/reg /proc/keys ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
607 725 0:44 /systemd/inaccessible/reg /proc/sysrq-trigger ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
608 725 0:44 /systemd/inaccessible/reg /proc/timer_list ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
609 725 0:47 /bus /proc/bus ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
610 725 0:47 /fs /proc/fs ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
611 725 0:47 /irq /proc/irq ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
612 725 0:47 /scsi /proc/scsi ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
613 703 0:46 / /dev/mqueue rw,nosuid,nodev,noexec,relatime shared:324 - mqueue mqueue rw,seclabel
|
||||
614 701 0:26 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:325 - cgroup2 cgroup rw,seclabel,nsdelegate
|
||||
615 603 0:44 /.#proc-sys-kernel-random-boot-id4fbdce67af46d1c2//deleted /proc/sys/kernel/random/boot_id ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
616 725 0:44 /.#proc-sys-kernel-random-boot-id4fbdce67af46d1c2//deleted /proc/sys/kernel/random/boot_id rw,nosuid,nodev shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
617 725 0:44 /.#proc-kmsg5b7a8bcfe6717139//deleted /proc/kmsg rw,nosuid,nodev shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
|
||||
The test process does
|
||||
name_to_handle_at("/proc/filesystems") which returns -EOPNOTSUPP, and then
|
||||
openat(AT_FDCWD, "/proc/filesystems") which returns 4, and then
|
||||
read(open("/proc/self/fdinfo/4", ...)) which gives
|
||||
"pos:\t0\nflags:\t012100000\nmnt_id:\t725\n"
|
||||
|
||||
and the "725" is clearly inconsistent with "700" in /proc/self/mountinfo.
|
||||
|
||||
We could either drop the fallback path (and fail name_to_handle_at() is not
|
||||
avaliable) or ignore the error in the test. Not sure what is better. I think
|
||||
this issue only occurs sometimes and with older kernels, so probably continuing
|
||||
with the current flaky implementation is better than ripping out the fallback.
|
||||
|
||||
Another strace:
|
||||
writev(2</dev/pts/0>, [{iov_base="mnt ids of /proc/sys is 603", iov_len=27}, {iov_base="\n", iov_len=1}], 2mnt ids of /proc/sys is 603
|
||||
) = 28
|
||||
name_to_handle_at(AT_FDCWD, "/", {handle_bytes=128 => 12, handle_type=129, f_handle=0x52748401000000008b93e20d}, [697], 0) = 0
|
||||
writev(2</dev/pts/0>, [{iov_base="mnt ids of / is 697", iov_len=19}, {iov_base="\n", iov_len=1}], 2mnt ids of / is 697
|
||||
) = 20
|
||||
name_to_handle_at(AT_FDCWD, "/proc/kcore", {handle_bytes=128 => 12, handle_type=1, f_handle=0x92ddcfcd2e802d0100000000}, [605], 0) = 0
|
||||
writev(2</dev/pts/0>, [{iov_base="mnt ids of /proc/kcore is 605", iov_len=29}, {iov_base="\n", iov_len=1}], 2mnt ids of /proc/kcore is 605
|
||||
) = 30
|
||||
name_to_handle_at(AT_FDCWD, "/dev", {handle_bytes=128 => 12, handle_type=1, f_handle=0x8ae269160c802d0100000000}, [703], 0) = 0
|
||||
writev(2</dev/pts/0>, [{iov_base="mnt ids of /dev is 703", iov_len=22}, {iov_base="\n", iov_len=1}], 2mnt ids of /dev is 703
|
||||
) = 23
|
||||
name_to_handle_at(AT_FDCWD, "/proc/filesystems", {handle_bytes=128}, 0x7fffe36ddb84, 0) = -1 EOPNOTSUPP (Operation not supported)
|
||||
openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4</proc/filesystems>
|
||||
openat(AT_FDCWD, "/proc/self/fdinfo/4", O_RDONLY|O_CLOEXEC) = 5</proc/20/fdinfo/4>
|
||||
fstat(5</proc/20/fdinfo/4>, {st_mode=S_IFREG|0400, st_size=0, ...}) = 0
|
||||
fstat(5</proc/20/fdinfo/4>, {st_mode=S_IFREG|0400, st_size=0, ...}) = 0
|
||||
read(5</proc/20/fdinfo/4>, "pos:\t0\nflags:\t012100000\nmnt_id:\t725\n", 2048) = 36
|
||||
read(5</proc/20/fdinfo/4>, "", 1024) = 0
|
||||
close(5</proc/20/fdinfo/4>) = 0
|
||||
close(4</proc/filesystems>) = 0
|
||||
writev(2</dev/pts/0>, [{iov_base="mnt ids of /proc/filesystems are 700, 725", iov_len=41}, {iov_base="\n", iov_len=1}], 2mnt ids of /proc/filesystems are 700, 725
|
||||
) = 42
|
||||
writev(2</dev/pts/0>, [{iov_base="the other path for mnt id 725 is /proc", iov_len=38}, {iov_base="\n", iov_len=1}], 2the other path for mnt id 725 is /proc
|
||||
) = 39
|
||||
writev(2</dev/pts/0>, [{iov_base="Assertion 'path_equal(p, t)' failed at src/test/test-mountpoint-util.c:94, function test_mnt_id(). Aborting.", iov_len=108}, {iov_base="\n", iov_len=1}], 2Assertion 'path_equal(p, t)' failed at src/test/test-mountpoint-util.c:94, function test_mnt_id(). Aborting.
|
||||
) = 109
|
||||
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
|
||||
rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0
|
||||
getpid() = 20
|
||||
gettid() = 20
|
||||
tgkill(20, 20, SIGABRT) = 0
|
||||
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
|
||||
--- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=20, si_uid=0} ---
|
||||
+++ killed by SIGABRT (core dumped) +++
|
||||
---
|
||||
src/test/test-mountpoint-util.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/test/test-mountpoint-util.c b/src/test/test-mountpoint-util.c
|
||||
index 30b00ae4d8b..ffe5144b04a 100644
|
||||
--- a/src/test/test-mountpoint-util.c
|
||||
+++ b/src/test/test-mountpoint-util.c
|
||||
@@ -89,8 +89,12 @@ static void test_mnt_id(void) {
|
||||
/* The ids don't match? If so, then there are two mounts on the same path, let's check if
|
||||
* that's really the case */
|
||||
char *t = hashmap_get(h, INT_TO_PTR(mnt_id2));
|
||||
- log_debug("the other path for mnt id %i is %s\n", mnt_id2, t);
|
||||
- assert_se(path_equal(p, t));
|
||||
+ log_debug("Path for mnt id %i from /proc/self/mountinfo is %s\n", mnt_id2, t);
|
||||
+
|
||||
+ if (!path_equal(p, t))
|
||||
+ /* Apparent kernel bug in /proc/self/fdinfo */
|
||||
+ log_warning("Bad mount id given for %s: %d, should be %d",
|
||||
+ p, mnt_id2, mnt_id);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
From 860be9427dff48efc5e486b039be932094572047 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Tue, 14 Jan 2014 17:48:08 -0500
|
||||
Subject: [PATCH] kernel-install: add fedora specific callouts to
|
||||
new-kernel-pkg
|
||||
|
||||
---
|
||||
src/kernel-install/kernel-install | 44 +++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 44 insertions(+)
|
||||
mode change 100644 => 100755 src/kernel-install/kernel-install
|
||||
|
||||
diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install
|
||||
old mode 100644
|
||||
new mode 100755
|
||||
index 3ae1d77..5c1e4fc
|
||||
--- a/src/kernel-install/kernel-install
|
||||
+++ b/src/kernel-install/kernel-install
|
||||
@@ -71,6 +71,50 @@ fi
|
||||
KERNEL_VERSION="$1"
|
||||
KERNEL_IMAGE="$2"
|
||||
|
||||
+if [[ -x /sbin/new-kernel-pkg ]]; then
|
||||
+ KERNEL_DIR="${KERNEL_IMAGE%/*}"
|
||||
+ if [[ "${KERNEL_DIR}" != "/boot" ]]; then
|
||||
+ for i in \
|
||||
+ "$KERNEL_IMAGE" \
|
||||
+ "$KERNEL_DIR"/System.map \
|
||||
+ "$KERNEL_DIR"/config \
|
||||
+ "$KERNEL_DIR"/zImage.stub \
|
||||
+ "$KERNEL_DIR"/dtb \
|
||||
+ ; do
|
||||
+ [[ -e "$i" ]] || continue
|
||||
+ cp -a "$i" "/boot/${i##*/}-${KERNEL_VERSION}"
|
||||
+ command -v restorecon &>/dev/null && \
|
||||
+ restorecon "/boot/${i##*/}-${KERNEL_VERSION}"
|
||||
+ done
|
||||
+ # hmac is .vmlinuz-<version>.hmac so needs a special treatment
|
||||
+ i="$KERNEL_DIR/.${KERNEL_IMAGE##*/}.hmac"
|
||||
+ if [[ -e "$i" ]]; then
|
||||
+ cp -a "$i" "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac"
|
||||
+ command -v restorecon &>/dev/null && \
|
||||
+ restorecon "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac"
|
||||
+ fi
|
||||
+ fi
|
||||
+
|
||||
+ [[ "$KERNEL_VERSION" == *\+* ]] && flavor=-"${KERNEL_VERSION##*+}"
|
||||
+ case "$COMMAND" in
|
||||
+ add)
|
||||
+ /sbin/new-kernel-pkg --package "kernel${flavor}" --install "$KERNEL_VERSION" || exit $?
|
||||
+ /sbin/new-kernel-pkg --package "kernel${flavor}" --mkinitrd --dracut --depmod --update "$KERNEL_VERSION" || exit $?
|
||||
+ /sbin/new-kernel-pkg --package "kernel${flavor}" --rpmposttrans "$KERNEL_VERSION" || exit $?
|
||||
+ ;;
|
||||
+ remove)
|
||||
+ /sbin/new-kernel-pkg --package "kernel${flavor+-$flavor}" --rminitrd --rmmoddep --remove "$KERNEL_VERSION" || exit $?
|
||||
+ ;;
|
||||
+ *)
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
+ # exit, if we can't find a boot loader spec conforming setup
|
||||
+ if ! [[ -d /boot/loader/entries || -L /boot/loader/entries ]]; then
|
||||
+ exit 0
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
if [[ -f /etc/machine-id ]]; then
|
||||
read MACHINE_ID < /etc/machine-id
|
||||
fi
|
||||
--
|
||||
2.6.0
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
[suppress_file]
|
||||
# This shared object is private to systemd
|
||||
file_name_regexp=libsystemd-shared-.*.so
|
|
@ -0,0 +1,10 @@
|
|||
# RPM macros for packages creating system accounts
|
||||
#
|
||||
# Turn a sysusers.d file into macros specified by
|
||||
# https://docs.fedoraproject.org/en-US/packaging-guidelines/UsersAndGroups/#_dynamic_allocation
|
||||
|
||||
%sysusers_requires_compat Requires(pre): shadow-utils
|
||||
|
||||
%sysusers_create_compat() \
|
||||
%(%{_rpmconfigdir}/sysusers.generate-pre.sh %{?*}) \
|
||||
%{nil}
|
|
@ -0,0 +1,101 @@
|
|||
#!/bin/bash -eu
|
||||
|
||||
if [ $UID -ne 0 ]; then
|
||||
echo "WARNING: This script needs to run as root to be effective"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export SYSTEMD_NSS_BYPASS_SYNTHETIC=1
|
||||
|
||||
if [ "${1:-}" = "--ignore-journal" ]; then
|
||||
shift
|
||||
ignore_journal=1
|
||||
else
|
||||
ignore_journal=0
|
||||
fi
|
||||
|
||||
echo "Checking processes..."
|
||||
if ps h -u 99 | grep .; then
|
||||
echo "ERROR: ps reports processes with UID 99!"
|
||||
exit 2
|
||||
fi
|
||||
echo "... not found"
|
||||
|
||||
echo "Checking UTMP..."
|
||||
if w -h 199 | grep . ; then
|
||||
echo "ERROR: w reports UID 99 as active!"
|
||||
exit 2
|
||||
fi
|
||||
if w -h nobody | grep . ; then
|
||||
echo "ERROR: w reports user nobody as active!"
|
||||
exit 2
|
||||
fi
|
||||
echo "... not found"
|
||||
|
||||
echo "Checking the journal..."
|
||||
if [ "$ignore_journal" = 0 ] && journalctl -q -b -n10 _UID=99 | grep . ; then
|
||||
echo "ERROR: journalctl reports messages from UID 99 in current boot!"
|
||||
exit 2
|
||||
fi
|
||||
echo "... not found"
|
||||
|
||||
echo "Looking for files in /etc, /run, /tmp, and /var..."
|
||||
if find /etc /run /tmp /var -uid 99 -print | grep -m 10 . ; then
|
||||
echo "ERROR: found files belonging to UID 99"
|
||||
exit 2
|
||||
fi
|
||||
echo "... not found"
|
||||
|
||||
echo "Checking if nobody is defined correctly..."
|
||||
if getent passwd nobody |
|
||||
grep '^nobody:[x*]:65534:65534:.*:/:/sbin/nologin';
|
||||
then
|
||||
echo "OK, nothing to do."
|
||||
exit 0
|
||||
else
|
||||
echo "NOTICE: User nobody is not defined correctly"
|
||||
fi
|
||||
|
||||
echo "Checking if nfsnobody or something else is using the uid..."
|
||||
if getent passwd 65534 | grep . ; then
|
||||
echo "NOTICE: will have to remove this user"
|
||||
else
|
||||
echo "... not found"
|
||||
fi
|
||||
|
||||
if [ "${1:-}" = "-x" ]; then
|
||||
if getent passwd nobody >/dev/null; then
|
||||
# this will remove both the user and the group.
|
||||
( set -x
|
||||
userdel nobody
|
||||
)
|
||||
fi
|
||||
|
||||
if getent passwd 65534 >/dev/null; then
|
||||
# Make sure the uid is unused. This should free gid too.
|
||||
name="$(getent passwd 65534 | cut -d: -f1)"
|
||||
( set -x
|
||||
userdel "$name"
|
||||
)
|
||||
fi
|
||||
|
||||
if grep -qE '^(passwd|group):.*\bsss\b' /etc/nsswitch.conf; then
|
||||
echo "Sleeping, so sss can catch up"
|
||||
sleep 3
|
||||
fi
|
||||
|
||||
if getent group 65534; then
|
||||
# Make sure the gid is unused, even if uid wasn't.
|
||||
name="$(getent group 65534 | cut -d: -f1)"
|
||||
( set -x
|
||||
groupdel "$name"
|
||||
)
|
||||
fi
|
||||
|
||||
# systemd-sysusers uses the same gid and uid
|
||||
( set -x
|
||||
systemd-sysusers --inline 'u nobody 65534 "Kernel Overflow User" / /sbin/nologin'
|
||||
)
|
||||
else
|
||||
echo "Pass '-x' to perform changes"
|
||||
fi
|
2
sources
2
sources
|
@ -1 +1 @@
|
|||
5d696f65381b2608da70544df07c2b3c systemd-229.tar.gz
|
||||
SHA512 (systemd-247.1.tar.gz) = 2a737afcee4409c2be073d8cb650c3465a25c101b3c3072ea6e6a0614d06e3ed7ae55c84f9ae60555915ad1480b3a13aa72fef4b9210139afe6b0d7a7629385a
|
||||
|
|
|
@ -0,0 +1,143 @@
|
|||
import re, sys, os, collections
|
||||
|
||||
buildroot = sys.argv[1]
|
||||
known_files = sys.stdin.read().splitlines()
|
||||
known_files = {line.split()[-1]:line for line in known_files}
|
||||
|
||||
def files(root):
|
||||
os.chdir(root)
|
||||
todo = collections.deque(['.'])
|
||||
while todo:
|
||||
n = todo.pop()
|
||||
files = os.scandir(n)
|
||||
for file in files:
|
||||
yield file
|
||||
if file.is_dir() and not file.is_symlink():
|
||||
todo.append(file)
|
||||
|
||||
o_libs = open('.file-list-libs', 'w')
|
||||
o_udev = open('.file-list-udev', 'w')
|
||||
o_pam = open('.file-list-pam', 'w')
|
||||
o_rpm_macros = open('.file-list-rpm-macros', 'w')
|
||||
o_devel = open('.file-list-devel', 'w')
|
||||
o_container = open('.file-list-container', 'w')
|
||||
o_networkd = open('.file-list-networkd', 'w')
|
||||
o_remote = open('.file-list-remote', 'w')
|
||||
o_tests = open('.file-list-tests', 'w')
|
||||
o_standalone_tmpfiles = open('.file-list-standalone-tmpfiles', 'w')
|
||||
o_standalone_sysusers = open('.file-list-standalone-sysusers', 'w')
|
||||
o_rest = open('.file-list-rest', 'w')
|
||||
for file in files(buildroot):
|
||||
n = file.path[1:]
|
||||
if re.match(r'''/usr/(share|include)$|
|
||||
/usr/share/man(/man.|)$|
|
||||
/usr/share/zsh(/site-functions|)$|
|
||||
/usr/share/dbus-1$|
|
||||
/usr/share/dbus-1/system.d$|
|
||||
/usr/share/dbus-1/(system-|)services$|
|
||||
/usr/share/polkit-1(/actions|/rules.d|)$|
|
||||
/usr/share/pkgconfig$|
|
||||
/usr/share/bash-completion(/completions|)$|
|
||||
/usr(/lib|/lib64|/bin|/sbin|)$|
|
||||
/usr/lib.*/(security|pkgconfig)$|
|
||||
/usr/lib/rpm(/macros.d|)$|
|
||||
/usr/lib/firewalld(/services|)$|
|
||||
/usr/share/(locale|licenses|doc)| # no $
|
||||
/etc(/pam\.d|/xdg|/X11|/X11/xinit|/X11.*\.d|)$|
|
||||
/etc/(dnf|dnf/protected.d)$|
|
||||
/usr/(src|lib/debug)| # no $
|
||||
/run$|
|
||||
/var(/cache|/log|/lib|/run|)$
|
||||
''', n, re.X):
|
||||
continue
|
||||
if '/security/pam_' in n or '/man8/pam_' in n:
|
||||
o = o_pam
|
||||
elif '/rpm/' in n:
|
||||
o = o_rpm_macros
|
||||
elif '/usr/lib/systemd/tests' in n:
|
||||
o = o_tests
|
||||
elif re.search(r'/lib.*\.pc|/man3/|/usr/include|(?<!/libsystemd-shared-...).so$', n):
|
||||
o = o_devel
|
||||
elif re.search(r'''journal-(remote|gateway|upload)|
|
||||
systemd-remote\.conf|
|
||||
/usr/share/systemd/gatewayd|
|
||||
/var/log/journal/remote
|
||||
''', n, re.X):
|
||||
o = o_remote
|
||||
elif re.search(r'''mymachines|
|
||||
machinectl|
|
||||
systemd-nspawn|
|
||||
import-pubring.gpg|
|
||||
systemd-(machined|import|pull)|
|
||||
/machine.slice|
|
||||
/machines.target|
|
||||
var-lib-machines.mount|
|
||||
org.freedesktop.(import|machine)1
|
||||
''', n, re.X):
|
||||
o = o_container
|
||||
elif re.search(r'''/usr/lib/systemd/network/80-|
|
||||
networkd|
|
||||
networkctl|
|
||||
org.freedesktop.network1
|
||||
''', n, re.X):
|
||||
o = o_networkd
|
||||
elif '.so.' in n:
|
||||
o = o_libs
|
||||
elif re.search(r'''udev(?!\.pc)|
|
||||
hwdb|
|
||||
bootctl|
|
||||
sd-boot|systemd-boot\.|loader.conf|
|
||||
bless-boot|
|
||||
boot-system-token|
|
||||
kernel-install|
|
||||
vconsole|
|
||||
backlight|
|
||||
rfkill|
|
||||
random-seed|
|
||||
modules-load|
|
||||
timesync|
|
||||
cryptsetup|
|
||||
kmod|
|
||||
quota|
|
||||
pstore|
|
||||
sleep|suspend|hibernate|
|
||||
systemd-tmpfiles-setup-dev|
|
||||
network/99-default.link|
|
||||
growfs|makefs|makeswap|mkswap|
|
||||
fsck|
|
||||
repart|
|
||||
gpt-auto|
|
||||
volatile-root|
|
||||
verity-setup|
|
||||
remount-fs|
|
||||
/boot$|
|
||||
/boot/efi|
|
||||
/kernel/|
|
||||
/kernel$|
|
||||
/modprobe.d
|
||||
''', n, re.X):
|
||||
o = o_udev
|
||||
elif n.endswith('.standalone'):
|
||||
if 'tmpfiles' in n:
|
||||
o = o_standalone_tmpfiles
|
||||
elif 'sysusers' in n:
|
||||
o = o_standalone_sysusers
|
||||
else:
|
||||
assert False, 'Found .standalone not belonging to known packages'
|
||||
else:
|
||||
o = o_rest
|
||||
|
||||
if n in known_files:
|
||||
prefix = ' '.join(known_files[n].split()[:-1])
|
||||
if prefix:
|
||||
prefix += ' '
|
||||
elif file.is_dir() and not file.is_symlink():
|
||||
prefix = '%dir '
|
||||
elif n.startswith('/etc'):
|
||||
prefix = '%config(noreplace) '
|
||||
else:
|
||||
prefix = ''
|
||||
|
||||
suffix = '*' if '/man/' in n else ''
|
||||
|
||||
print(f'{prefix}{n}{suffix}', file=o)
|
|
@ -0,0 +1,3 @@
|
|||
[Unit]
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1378974#c17
|
||||
RefuseManualStop=true
|
|
@ -0,0 +1,10 @@
|
|||
# This file is part of systemd.
|
||||
#
|
||||
# Used by systemd --user instances.
|
||||
|
||||
account include system-auth
|
||||
|
||||
session required pam_selinux.so close
|
||||
session required pam_selinux.so nottys open
|
||||
session required pam_loginuid.so
|
||||
session include system-auth
|
|
@ -0,0 +1,50 @@
|
|||
# Just kill all warnings about README being wrong in every possible way
|
||||
addFilter(r'README')
|
||||
|
||||
addFilter(r'missing-call-to-(chdir-with-chroot|setgroups-before-setuid)')
|
||||
|
||||
addFilter(r'executable-marked-as-config-file /etc/X11/xinit/xinitrc.d/50-systemd-user.sh')
|
||||
|
||||
addFilter(r'non-readable /etc/crypttab')
|
||||
|
||||
addFilter(r'non-conffile-in-etc /etc/inittab')
|
||||
|
||||
addFilter(r'systemd-unit-in-etc /etc/systemd/.*\.wants')
|
||||
|
||||
addFilter(r'dangling-relative-symlink /usr/lib/environment.d/99-environment.conf ../../../etc/environment')
|
||||
|
||||
addFilter(r'devel-file-in-non-devel-package /usr/share/pkgconfig/(systemd|udev).pc')
|
||||
|
||||
addFilter(r'non-standard-dir-perm /var/cache/private 700')
|
||||
|
||||
addFilter(r'non-root-group-log-file /var/log/btmp utmp')
|
||||
|
||||
addFilter(r'non-standard-dir-perm /var/log/private 700')
|
||||
|
||||
addFilter(r'non-root-group-log-file /var/log/wtmp utmp')
|
||||
|
||||
addFilter(r'dangerous-command-in-')
|
||||
|
||||
addFilter(r'summary-not-capitalized C systemd')
|
||||
|
||||
addFilter(r'obsolete-not-provided')
|
||||
|
||||
addFilter(r'postin-without-ldconfig')
|
||||
|
||||
addFilter(r'systemd-rpm-macros.noarch: W: only-non-binary-in-usr-lib')
|
||||
|
||||
addFilter(r'systemd-rpm-macros.noarch: W: no-documentation')
|
||||
|
||||
addFilter(r'systemd-tests\..*: W: no-documentation')
|
||||
|
||||
addFilter(r'systemd-tests.*: E: zero-length /usr/lib/systemd/tests/testdata/test-umount/empty.mountinfo')
|
||||
|
||||
addFilter(r'hardcoded-library-path in.*(firewalld|install.d|lib/systemd)')
|
||||
|
||||
# everybody does it this way: systemd, syslog-ng, rsyslog
|
||||
addFilter(r'unversioned-explicit-provides syslog')
|
||||
|
||||
# systemd-machine-id-setup requires libssl
|
||||
addFilter(r'explicit-lib-dependency openssl-libs')
|
||||
|
||||
addFilter(r'systemd.src:.*strange-permission')
|
2003
systemd.spec
2003
systemd.spec
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,2 @@
|
|||
%__sysusers_provides %{_rpmconfigdir}/sysusers.prov
|
||||
%__sysusers_path ^%{_sysusersdir}/.*\\.conf$
|
|
@ -0,0 +1,79 @@
|
|||
#!/bin/bash
|
||||
|
||||
# This script turns sysuser.d files into scriptlets mandated by Fedora
|
||||
# packaging guidelines. The general idea is to define users using the
|
||||
# declarative syntax but to turn this into traditional scriptlets.
|
||||
|
||||
user() {
|
||||
user="$1"
|
||||
uid="$2"
|
||||
desc="$3"
|
||||
group="$4"
|
||||
home="$5"
|
||||
shell="$6"
|
||||
|
||||
[ "$desc" = '-' ] && desc=
|
||||
[ "$home" = '-' -o "$home" = '' ] && home=/
|
||||
[ "$shell" = '-' -o "$shell" = '' ] && shell=/sbin/nologin
|
||||
|
||||
if [ "$uid" = '-' -o "$uid" = '' ]; then
|
||||
cat <<EOF
|
||||
getent passwd '$user' >/dev/null || \\
|
||||
useradd -r -g '$group' -d '$home' -s '$shell' -c '$desc' '$user'
|
||||
EOF
|
||||
else
|
||||
cat <<EOF
|
||||
if ! getent passwd '$user' >/dev/null ; then
|
||||
if ! getent passwd '$uid' >/dev/null ; then
|
||||
useradd -r -u '$uid' -g '$group' -d '$home' -s /sbin/nologin -c '$desc' '$user'
|
||||
else
|
||||
useradd -r -g '$group' -d '$home' -s /sbin/nologin -c '$desc' '$user'
|
||||
fi
|
||||
fi
|
||||
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
group() {
|
||||
group="$1"
|
||||
gid="$2"
|
||||
if [ "$gid" = '-' ]; then
|
||||
cat <<EOF
|
||||
getent group '$group' >/dev/null || groupadd -r '$group'
|
||||
EOF
|
||||
else
|
||||
cat <<EOF
|
||||
getent group '$group' >/dev/null || groupadd -f -g '$gid' -r '$group'
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
parse() {
|
||||
while read line || [ "$line" ]; do
|
||||
[ "${line:0:1}" = '#' -o "${line:0:1}" = ';' ] && continue
|
||||
line="${line## *}"
|
||||
[ -z "$line" ] && continue
|
||||
eval arr=( $line )
|
||||
case "${arr[0]}" in
|
||||
('u')
|
||||
group "${arr[1]}" "${arr[2]}"
|
||||
user "${arr[1]}" "${arr[2]}" "${arr[3]}" "${arr[1]}" "${arr[4]}" "${arr[5]}"
|
||||
# TODO: user:group support
|
||||
;;
|
||||
('g')
|
||||
group "${arr[1]}" "${arr[2]}"
|
||||
;;
|
||||
('m')
|
||||
group "${arr[2]}" "-"
|
||||
user "${arr[1]}" "-" "" "${arr[2]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
for fn in "$@"; do
|
||||
[ -e "$fn" ] || continue
|
||||
echo "# generated from $(basename $fn)"
|
||||
parse < "$fn"
|
||||
done
|
|
@ -0,0 +1,28 @@
|
|||
#!/bin/bash
|
||||
|
||||
parse() {
|
||||
while read line; do
|
||||
[ "${line:0:1}" = '#' -o "${line:0:1}" = ';' ] && continue
|
||||
line="${line## *}"
|
||||
[ -z "$line" ] && continue
|
||||
set -- $line
|
||||
case "$1" in
|
||||
('u')
|
||||
echo "user($2)"
|
||||
echo "group($2)"
|
||||
# TODO: user:group support
|
||||
;;
|
||||
('g')
|
||||
echo "group($2)"
|
||||
;;
|
||||
('m')
|
||||
echo "user($2)"
|
||||
echo "group($3)"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
while read fn; do
|
||||
parse < "$fn"
|
||||
done
|
|
@ -0,0 +1,50 @@
|
|||
---
|
||||
- hosts: localhost
|
||||
vars:
|
||||
- artifacts: "{{ lookup('env', 'TEST_ARTIFACTS')|default('./artifacts', true) }}"
|
||||
tags:
|
||||
- classic
|
||||
tasks:
|
||||
# switch SELinux to permissive mode
|
||||
- name: Get default kernel
|
||||
command: "grubby --default-kernel"
|
||||
register: default_kernel
|
||||
- debug: msg="{{ default_kernel.stdout }}"
|
||||
- name: Set permissive mode
|
||||
command: "grubby --args=enforcing=0 --update-kernel {{ default_kernel.stdout }}"
|
||||
|
||||
- name: reboot
|
||||
block:
|
||||
- name: restart host
|
||||
shell: sleep 2 && shutdown -r now "Ansible updates triggered"
|
||||
async: 1
|
||||
poll: 0
|
||||
ignore_errors: true
|
||||
|
||||
- name: wait for host to come back
|
||||
wait_for_connection:
|
||||
delay: 10
|
||||
timeout: 300
|
||||
|
||||
- name: Re-create /tmp/artifacts
|
||||
command: mkdir /tmp/artifacts
|
||||
|
||||
- name: Gather SELinux denials since boot
|
||||
shell: |
|
||||
result=pass
|
||||
dmesg | grep -i -e type=1300 -e type=1400 > /tmp/avc.log && result=fail
|
||||
ausearch -m avc -m selinux_err -m user_avc -ts boot &>> /tmp/avc.log
|
||||
grep -q '<no matches>' /tmp/avc.log || result=fail
|
||||
echo -e "\nresults:\n- test: reboot and collect AVC\n result: $result\n logs:\n - avc.log\n\n" > /tmp/results.yml
|
||||
( [ $result = "pass" ] && echo PASS test-reboot || echo FAIL test-reboot ) > /tmp/test.log
|
||||
|
||||
always:
|
||||
- name: Pull out the artifacts
|
||||
fetch:
|
||||
dest: "{{ artifacts }}/"
|
||||
src: "{{ item }}"
|
||||
flat: yes
|
||||
with_items:
|
||||
- /tmp/test.log
|
||||
- /tmp/avc.log
|
||||
- /tmp/results.yml
|
|
@ -0,0 +1,111 @@
|
|||
# -*- Mode: rpm-spec; indent-tabs-mode: nil -*- */
|
||||
# SPDX-License-Identifier: LGPL-2.1+
|
||||
#
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# Copyright 2015 Zbigniew Jędrzejewski-Szmek
|
||||
# Copyright 2018 Neal Gompa
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# systemd is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# The contents of this are an example to be copied into systemd.spec.
|
||||
#
|
||||
# Minimum rpm version supported: 4.13.0
|
||||
|
||||
%transfiletriggerin -P 900900 -- /usr/lib/systemd/system /etc/systemd/system
|
||||
# This script will run after any package is initially installed or
|
||||
# upgraded. We care about the case where a package is initially
|
||||
# installed, because other cases are covered by the *un scriptlets,
|
||||
# so sometimes we will reload needlessly.
|
||||
if test -d /run/systemd/system; then
|
||||
%{_bindir}/systemctl daemon-reload
|
||||
fi
|
||||
|
||||
%transfiletriggerun -- /usr/lib/systemd/system /etc/systemd/system
|
||||
# On removal, we need to run daemon-reload after any units have been
|
||||
# removed. %transfiletriggerpostun would be ideal, but it does not get
|
||||
# executed for some reason.
|
||||
# On upgrade, we need to run daemon-reload after any new unit files
|
||||
# have been installed, but before %postun scripts in packages get
|
||||
# executed. %transfiletriggerun gets the right list of files
|
||||
# but it is invoked too early (before changes happen).
|
||||
# %filetriggerpostun happens at the right time, but it fires for
|
||||
# every package.
|
||||
# To execute the reload at the right time, we create a state
|
||||
# file in %transfiletriggerun and execute the daemon-reload in
|
||||
# the first %filetriggerpostun.
|
||||
|
||||
if test -d "/run/systemd/system"; then
|
||||
mkdir -p "%{_localstatedir}/lib/rpm-state/systemd"
|
||||
touch "%{_localstatedir}/lib/rpm-state/systemd/needs-reload"
|
||||
fi
|
||||
|
||||
%filetriggerpostun -P 1000100 -- /usr/lib/systemd/system /etc/systemd/system
|
||||
if test -f "%{_localstatedir}/lib/rpm-state/systemd/needs-reload"; then
|
||||
rm -rf "%{_localstatedir}/lib/rpm-state/systemd"
|
||||
%{_bindir}/systemctl daemon-reload
|
||||
fi
|
||||
|
||||
%transfiletriggerin -P 100700 -- /usr/lib/sysusers.d
|
||||
# This script will process files installed in /usr/lib/sysusers.d to create
|
||||
# specified users automatically. The priority is set such that it
|
||||
# will run before the tmpfiles file trigger.
|
||||
if test -d /run/systemd/system; then
|
||||
%{_bindir}/systemd-sysusers || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin -P 100500 -- /usr/lib/tmpfiles.d
|
||||
# This script will process files installed in /usr/lib/tmpfiles.d to create
|
||||
# tmpfiles automatically. The priority is set such that it will run
|
||||
# after the sysusers file trigger, but before any other triggers.
|
||||
if test -d /run/systemd/system; then
|
||||
%{_bindir}/systemd-tmpfiles --create || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin udev -- /usr/lib/udev/hwdb.d
|
||||
# This script will automatically invoke hwdb update if files have been
|
||||
# installed or updated in /usr/lib/udev/hwdb.d.
|
||||
if test -d /run/systemd/system; then
|
||||
%{_bindir}/systemd-hwdb update || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin -- /usr/lib/systemd/catalog
|
||||
# This script will automatically invoke journal catalog update if files
|
||||
# have been installed or updated in /usr/lib/systemd/catalog.
|
||||
if test -d /run/systemd/system; then
|
||||
%{_bindir}/journalctl --update-catalog || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin udev -- /usr/lib/udev/rules.d
|
||||
# This script will automatically update udev with new rules if files
|
||||
# have been installed or updated in /usr/lib/udev/rules.d.
|
||||
if test -e /run/udev/control; then
|
||||
%{_bindir}/udevadm control --reload || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin -- /usr/lib/sysctl.d
|
||||
# This script will automatically apply sysctl rules if files have been
|
||||
# installed or updated in /usr/lib/sysctl.d.
|
||||
if test -d /run/systemd/system; then
|
||||
/usr/lib/systemd/systemd-sysctl || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin -- /usr/lib/binfmt.d
|
||||
# This script will automatically apply binfmt rules if files have been
|
||||
# installed or updated in /usr/lib/binfmt.d.
|
||||
if test -d /run/systemd/system; then
|
||||
# systemd-binfmt might fail if binfmt_misc kernel module is not loaded
|
||||
# during install
|
||||
/usr/lib/systemd/systemd-binfmt || :
|
||||
fi
|
|
@ -0,0 +1,40 @@
|
|||
From 223ea50950f97ed4e67311dfcffed7ffc27a7cd3 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 14 Aug 2019 15:57:42 +0200
|
||||
Subject: [PATCH] udev: use bfq as the default scheduler
|
||||
|
||||
As requested in https://bugzilla.redhat.com/show_bug.cgi?id=1738828.
|
||||
Test results are that bfq seems to behave better and more consistently on
|
||||
typical hardware. The kernel does not have a configuration option to set
|
||||
the default scheduler, and it currently needs to be set by userspace.
|
||||
|
||||
See the bug for more discussion and links.
|
||||
---
|
||||
rules.d/60-block-scheduler.rules | 5 +++++
|
||||
rules.d/meson.build | 1 +
|
||||
2 files changed, 6 insertions(+)
|
||||
create mode 100644 rules.d/60-block-scheduler.rules
|
||||
|
||||
diff --git a/rules.d/60-block-scheduler.rules b/rules.d/60-block-scheduler.rules
|
||||
new file mode 100644
|
||||
index 0000000000..480b941761
|
||||
--- /dev/null
|
||||
+++ b/rules.d/60-block-scheduler.rules
|
||||
@@ -0,0 +1,5 @@
|
||||
+# do not edit this file, it will be overwritten on update
|
||||
+
|
||||
+ACTION=="add", SUBSYSTEM=="block", \
|
||||
+ KERNEL=="mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|sd*[!0-9]|sr*", \
|
||||
+ ATTR{queue/scheduler}="bfq"
|
||||
diff --git a/rules.d/meson.build b/rules.d/meson.build
|
||||
index ca4445d774..38d6aa6970 100644
|
||||
--- a/rules.d/meson.build
|
||||
+++ b/rules.d/meson.build
|
||||
@@ -3,6 +3,7 @@
|
||||
rules = files('''
|
||||
60-autosuspend.rules
|
||||
60-block.rules
|
||||
+ 60-block-scheduler.rules
|
||||
60-cdrom_id.rules
|
||||
60-drm.rules
|
||||
60-evdev.rules
|
|
@ -1 +1,2 @@
|
|||
systemd
|
||||
systemd-udev
|
||||
|
|
Loading…
Reference in New Issue