From patchwork Fri Feb 17 15:13:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Smalley X-Patchwork-Id: 9580085 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id F07A76042F for ; Fri, 17 Feb 2017 15:11:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DFDAB28586 for ; Fri, 17 Feb 2017 15:11:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D2485285FB; Fri, 17 Feb 2017 15:11:58 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from emsm-gh1-uea10.nsa.gov (smtp.nsa.gov [8.44.101.8]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 1147E28586 for ; Fri, 17 Feb 2017 15:11:57 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.35,172,1484006400"; d="scan'208";a="3997665" IronPort-PHdr: =?us-ascii?q?9a23=3AtksMERfOzu69pe/imMBU7fTzlGMj4u6mDksu8pMi?= =?us-ascii?q?zoh2WeGdxcq4ZxeN2/xhgRfzUJnB7Loc0qyN4v2mATJLvs3JmUtBWaQEbwUCh8?= =?us-ascii?q?QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFRrlKAV6?= =?us-ascii?q?OPn+FJLMgMSrzeCy/IDYbxlViDanb75/KBW7oR/NusQXjodvKKg8wQbVr3VVfO?= =?us-ascii?q?hb2XlmLk+JkRbm4cew8p9j8yBOtP8k6sVNT6b0cbkmQLJBFDgpPHw768PttRnY?= =?us-ascii?q?UAuA/WAcXXkMkhpJGAfK8hf3VYrsvyTgt+p93C6aPdDqTb0xRD+v4btnRAPuhS?= =?us-ascii?q?waOTE56mXXgdFugqxdrhyquhhzz5fKbI2JMfZzeL7Wc9EHSmpbRstfVzJPDJ6y?= =?us-ascii?q?YYUMCOQBJeRVo5TzqlQBsRSwChejBPj0xz9UhHL7x7E23v49HQ3Y2gErAtIAsG?= =?us-ascii?q?7TrNXwLKocTPy1w7fQzTXDcfxW3yr25pXNch87pfGMWax/cMrMwkQoDAPKk06Q?= =?us-ascii?q?pJf5PzKVyusNs2+b4/BmVeK0kWErsQ5xoj+xxso1jITCm4Ebykjc+Clkz4s4Ks?= =?us-ascii?q?e0RU5mbdK+DpdduD+WO5FrTs4kXmpmojw1yqcctp6+ZCUKzZMnyAPBZPGfaIiI?= =?us-ascii?q?5w7jVP6WITdlmHJpYLK/iAi28Uin0uD8StO70ExLripYidnArGwN1hzP5ciHTf?= =?us-ascii?q?tx5EGh1iqU1w/P8O1EJEE0la7DJ54gxL4/iIYTvFzeEiL5l0j6lq+belg+9uS2?= =?us-ascii?q?5OnrfK/qqoKEO49xkA7+M6AumsKlAeQ/NwgDR3Ob9vq41L3i+035XbpLguQtna?= =?us-ascii?q?nerZDaI9gUqbCiAwJOzoYi6wqwDzeh0NgCm3kHN0hKdAiIj4juJVHCOOr4Auun?= =?us-ascii?q?g1SwjDdrwOjLPr/mApXLNHfDjLfhcqx760NHygozytZf55dOBbEaPPL8RFXxtM?= =?us-ascii?q?fCAh8+KQy0zP7tCM9h2YMGRWKPHqiZPbvQsV+K/O0gP+qMZJQSuDb7Kvgl+eXj?= =?us-ascii?q?jXE9mV8AcqimxoYXaHakHvR7OUmZZmDsgtgZG2cQogU+VPDqiEGFUTNLaXeyXq?= =?us-ascii?q?Y85jQlB4K8ForDSJ6ij6GG3CehBJJWfnpGCleOEXj2a4qER+0AaCWIIs9uijYE?= =?us-ascii?q?T6SuS5c91RGysw/306doIfbR+i0fs5LjyMV56vbNlR4s7zx0DsWc02aLT21umG?= =?us-ascii?q?MHWSM21rhloUNh0leDzbR4g/tAGNNO+/NGSB06OIXAwOx9DtD9RhjOfsyVSFq8?= =?us-ascii?q?RNWpHy0xRMorw9ASe0Z9B8mijhfb0iuqAr4VkLqLCYcx8qLYxnTxJsB9x2zA1K?= =?us-ascii?q?Y7lVkmQcpPNXO4iaJl8QjcGZLJmV2Dl6m2baQcwDLN9GCbwGWVp05UVwpwUaTe?= =?us-ascii?q?XXADfUvat8/56V3eQLO0ErQoLA9Byc+EKqtXZdzklklJRff5ONTDeGK9gWmxCg?= =?us-ascii?q?yUxrOXa4rqfX8R3CLHCEgLiwoT52qJNRAiBie9pGLTFCJhFUr1bEP28Ol+s2i2?= =?us-ascii?q?TlcuwAGQbk1hzKK1+hoPivOAVfwfxLUEuD0uqz9sBlayw8rWC8acpwpmZKhcb8?= =?us-ascii?q?k9701B1W3Ftgx9JYetL6V6hl4fagh3pE3v1w5tBoVHi8gqo2sgzBBuJqKAzFNB?= =?us-ascii?q?azSY0IjzOrLNKWny+w2vZrXV2l7E09aW/boP5O4/q1X5swGjDlAi/Gl/09lJz3?= =?us-ascii?q?uc4Y3HAxAPXpLrU0Y46QJ6qqrAbSYh4oPYz3psMbO7sjXawdImGPMlygq8f9dY?= =?us-ascii?q?KK6EFBH9E8keB8ipM+Eqn0Wpbg4DPOBX7qE4JcSmd+GJ2KSzJuZvgCqmjXhb4I?= =?us-ascii?q?B6yk+M7CR8SvTP35Ye3/GVxRCHVzH7jFavt8D4g4ZEaSsUHmWh1SjuHJRRabFq?= =?us-ascii?q?fYYXFWeuJNW6x9tkiJ7pR35X6kSjB0gd1c+3ZxWSdUfy3RBV1UgNpnyngyS4xS?= =?us-ascii?q?Rukz41tqqfwDDOw+P6eRobJ2FEWWhigk3oIYWvk98aW02oYBQzmxu++Ub23a5b?= =?us-ascii?q?q7pjL2PLW0dHYzD2L31+Uqu3rreCZc9P6JcssSpJS+SxekqVRaDnoxsdyS/jGH?= =?us-ascii?q?FexD8jfTGwppr5hwB6iH6aLHtrsnrZeN1/xQvY5NzGX/JewjoGRC5+iTnYHVW8?= =?us-ascii?q?O9ip/dOOmJfZteCyTWWhVodccSPz14OPqDO75XF2AR24h/2zntznERMm0SPizN?= =?us-ascii?q?llSyHIrBf6Yon22KW3KvlnflFpBF/66sp1Bpp+npE2hJ4OxXgQno+V8mYfkWfv?= =?us-ascii?q?LdVb3rrzbGAKRT4Px97a/hLl11FkLnOH3I/5TWidzdd6Z9WgZWMWwC095dhQCK?= =?us-ascii?q?iI9LxEgTd1ol2goALJe/d9gzMdxeE053IAmO4Jvw4tzjmaArAUBkRYODDglxKP?= =?us-ascii?q?79+itqlXYnigcaSo3kpkgd+hFK2Coh1bWHvheZctAylw7t5kPVLPznLz7JrkeN?= =?us-ascii?q?/OYtIPrBGUlA3Aj+dNIpIrivUKnTZnOX76vXA91e47iwFh0IqkvIiBNmpt/Li1?= =?us-ascii?q?AhhGOT3pf8kT4C3ijb5CnsaK2ICiBo1hFS8WXJvsVv+nDDMStejnNgqXHj0zsH?= =?us-ascii?q?GbFaDYHQ+F50dst2jPHIyzN3GLOHkZys1vRAOAK0NCmw0UUzA6n5EjGgCs2sPh?= =?us-ascii?q?bF9z5ioN6V7gthtM1uVoOgHnUmjFuQeobik7SICFIxpQ8gFN+V3VPNeD7uJoAS?= =?us-ascii?q?5Y5IahoBaWKmycegRIF30GVVKKB1DkJLmu6sfP//KeBuWgM/vEea+OpvBGV/eU?= =?us-ascii?q?2ZKv1ZNr/ziWOcWJInliCPg711FNXX9nBsvZnC8PRDYPlyLXaM6bpgmz9TFrrs?= =?us-ascii?q?yl9/TrQg3v75OVC7ROKdVv5wy2gaCbOu6Vnil5LTJY2Y0QxX/U0rcQxkUfiydw?= =?us-ascii?q?eDmxCrQPqTTCTLrOlaNNCR4UdT9zPtNS760gxglNJdLbitTt275ilPI0BU1JVV?= =?us-ascii?q?n7lcGtYswLI3qwO0nbC0aOLriGIifLw87va6OmVbJQlPlUtwG3uTuDHU/jJCqM?= =?us-ascii?q?mCTyVx+1N+FMkCabPAdFtY6nbhltDHLvTNX8ah20KNV3lyE5waUohnPWMm4RKT?= =?us-ascii?q?58c1lXob2I9SNVmft/G21b7np+MemElSeZ7+/CJZYQrfRrAz57l+ZA7HQ90btV?= =?us-ascii?q?4zlOROZplyvKst5uv1amn/GXyjV5SxVBtDBLhIOXvUVlIqjZ94dPVmja8x4X6m?= =?us-ascii?q?WQERsKrcN/CtLzo6BQ1sTPlKXrJThf6NLb49ETB8fOKM2dLnosKgHpFyTXDAsY?= =?us-ascii?q?Vz6kL3vTh0hAkPGU7HKVtIE2qoTrmJoNSr5bU0Y5FvUEBUR5BNYCOot4Xis4kb?= =?us-ascii?q?6Hi84F/WG+owPPRMpAsZDISOmSDO70KDmDk7lLfRQIzq3jLYgJMI30xVBiYEFg?= =?us-ascii?q?nIvWA0rQQcxNoip5YwAvoUVN/39+Tmso1k34dAyi+34TGuSynhIsjQt+e+st/i?= =?us-ascii?q?/241grPlrKuDcwkE4plNr/jjCeaiDxI7mrUIFREyr7qU4xMpbhTAZ0aQ29hktk?= =?us-ascii?q?NTjeS7JWlbtgenhhiBXAtptXBf5cUapEbQcMxfGQYvUky05cqiKmxEBZ4+vKEo?= =?us-ascii?q?FilAw0fp6vtH9PxwVjbNspKqPKP6pJ0kJchqSQsS+0zuox2hMRJ14R8GOOfy4F?= =?us-ascii?q?oE8IN7kiJyW25eFs7AuCmzVNeGcSS/oqvvJq9kQ4O+ue1S7g1aBMKlypPeyFM6?= =?us-ascii?q?yZo3TAldKPQl4o0EMHiVNK/bxt3McgdEqUTFwvw6GXFxQSNsrCKBtZb8xM+3jP?= =?us-ascii?q?ZSyOq/nCwYppP4WhEeDlVfWOu7gPgk26BgkpBZgD7sQaE5a30UHYN9roLLkLyR?= =?us-ascii?q?U1/gTkOlWEAO5PeB2VjDcNu9u/w4Nv3YlBOjEdBn1wPjiw5rbRoA8lneSMXNM3?= =?us-ascii?q?YnoBRIQLKGg2WMqgly5epXRAAyG90vgFxwia8z/8uiPQASHhYNV5eveUZA5jCM?= =?us-ascii?q?qt9Dol6ai2k1nX85vFJ27kKdtip8XP6eIGp5eHEf9US6dys1vEkYlCW3OqS3LP?= =?us-ascii?q?EcKyJ5Xob4ksasb0BWi8Ul2+jDI4VMjxPNCwLqSShgHoX4lUupGB3D8/Lc+9Ci?= =?us-ascii?q?0eGxBoquEY+q18YQwDY5wmYR/nrAkxK6u/IAKE3dq0WGatNSFaT/9BwuWmf7ZX?= =?us-ascii?q?1TYjbvemyHs8SZE31+q38VQNRZ4QiBHe2fajapJRUSj0AnxSZx/DpSwnmGh9Lu?= =?us-ascii?q?wy2PswwAvUsVkANDCGbPBpaG1Bv9E7GVOSIXV3B3ElSF+djYvM+BWj06oU/yRD?= =?us-ascii?q?g9ZeyfdFv2Tmvp/DfDKsX7Smpo/RsyohcdcpvbV+MYnjI8uAs5PemCbQQYLLvQ?= =?us-ascii?q?2ESiG6EeNWmtZNIC5CRvlHh30lM9QcuYVd8UoxSts+J7tXBaY3uL+qbyFpAjQP?= =?us-ascii?q?wi8HSYyAxicCjf2m27rajBuQd44iMBMcupVYntQdSzJ2Yj8ZpKK7WIXWim6ESm?= =?us-ascii?q?wPIAgN6ARB/x8PmZFrceDk+oXISoVAyzlMo/J7SiHLDIVn90PnSmGKhlj1UO+h?= =?us-ascii?q?k+qo3Q1OzPLs1d0bWAVnB0ZE2uhYjFclJrZsJqYMuY7KtyOHelnhvGLx0uemIk?= =?us-ascii?q?deydHMfV3iEIXFrXb8UjEb+XAMX49A0mvfFZMJnAdidKYrvk9DIJ64dUb65jwk?= =?us-ascii?q?wYtpH725VcCkx1YlsXgGSD2wE9pEEe1mtkzYWCF9aZCxtJrlI4lSQnNX+JCFpV?= =?us-ascii?q?ZVilliMy64yZpZKsFC+D0MUSNOoTqDotS9VtdP2chsD58DOt1/oWvyGLtYOJiN?= =?us-ascii?q?pH07oqbgymXE+zA6qlu6xy6+G665T+JY420RAR8lJ2KApUkzF+Es6Hvd8kjRsl?= =?us-ascii?q?Bo+OdWHrmPjUNtoDljGpBBGDNJ2m65L1RpTHhLqOJaKLzLfMxaRvk9fx6vOxgl?= =?us-ascii?q?Gv4h0E2F50Z0nW32YyZqrAtV5zjdXxUoVSkSmrrtlicepduhOT8GUJ9IbDIhbi?= =?us-ascii?q?nDKwKHmSBYohdfa0d2W58HGNZJ4bcb0pVI/sDaU0ajNTkFXAB+NgI/yfdfiUlD?= =?us-ascii?q?sECDdCDBEQaocO3AvgdxfciPsM6jNO758xtfioP7rOA48L0OR328lg23W9/eq5?= =?us-ascii?q?Lzu8aXuUSQbKf4K/OzYXvfQzjWlxywgq0kD5bS9SjJLAVbM4V6yWYjYZX5C27L?= =?us-ascii?q?OgpJKrkGKEVFTqB1d89GovxEaMB5YqoJ/7FiBg6fTBP1BIOvtOVGLkrURTnGNC?= =?us-ascii?q?qB/PCwrZ7R4LDAR+XtfdCDx3HCQ61rJJh68iX7F63s0YBA5kr8wu1t+V9iSVja?= =?us-ascii?q?LyCBq8zsJhkV68a/dkvtpIEpECjSAJd3jnri2F9MeNYQQyK37psU0pVZ52jsSe?= =?us-ascii?q?hgyEj8rPVS96V46Ykw+71p0dy0JbvIJvtHrU9qGQOUBgJ39pU3HGdwWWZRYvML?= =?us-ascii?q?KPjLeaQVl8fuq/r4F6YP8h2a5/RZacfbJ0HGgsS/FiucRgJakwgcsjMaMw+c1+?= =?us-ascii?q?Kfm6BuV8alpO/52kYz7FiiNBIGy6pt5Yic8KqSuODXdwfRzaQDWqXyW8zzqK4j?= =?us-ascii?q?tliP6v0ijrECYGt1YxeoEOIFTM4S2n/gzbw2zSIrC87DHajv+OREV3IimjLvgY?= =?us-ascii?q?59Ek4TGvMJGbqL4YVekXs5m+PDMN0WabpOmmGVFR6rCrUC02Kk6zOLIGl5hRHD?= =?us-ascii?q?yxPwTnm17F/4ty94RjbDwMn4n0pJTLa3A1xSXy2zNU9+rjyPIBLitMDrtqQt8E?= =?us-ascii?q?E2LmvkucqLlGulI75XHsv/JNmGLSk1olIXgocxSca02YAHA9q9Pcse8G1jbvvE?= =?us-ascii?q?9WyniShBo71Ih4DG+MGa5u3XHWW8j62ds7iNwjFYxWQ/vVE78N+gLevC59yNQ/?= =?us-ascii?q?SvzGYRVDxyuw7OUh+6sLDbqEoUOUOT2kfRhIMKJs1Z3WU/1kz++OcsWtYz+xtF?= =?us-ascii?q?FobcZ/ICoiv+OCDozlaefd03UDWe0zpNEV7vF1l3BrQ80nrqvM3VjXfQ50EoRo?= =?us-ascii?q?5oekzjnhx3CoU1JFkj6FcJ3yUDFhINZgqDDLGyAkTlL5ULWlQfaRid27i6YKg3?= =?us-ascii?q?11Vpwryz/O/TcfB8B60VO/Zfjw6OmUNWGpcIvqweXr18YV5d9KjYpgT4DYjoQe?= =?us-ascii?q?Tmn2IqNfKpWsBa7dwZt3w67wa+Rhuv841M4KoAhZCTaKFEfYbDs9xm40dg/z4P?= =?us-ascii?q?eTRHgAJjgBOhTeAcuOfj78DAv5qp8eavWrwiR+cW9xgoH2RxlYbwgFQ4rN7L0O?= =?us-ascii?q?dTV5Pahp7i8ABXJH6KopzV3wN7KeoUJIKhZKxg+GkfJygCO3IOOsKba+Em7C9x?= =?us-ascii?q?LDrT51JDAsQWZdMbJcbNgh5biknoWLFV68raFUSVC59peMA082X3yD408ZwmUu?= =?us-ascii?q?bj8jO2Jo7Q70tLP/xdiCVgjtXCpPIawfDKEigY/WGZawRpwiOF05SNF+zw8vuI?= =?us-ascii?q?yN7OUVMJADU7XJpcJDqN+AynWvC6lI7zXQOO98//mpQ+e1yMRnaphqQKrr5MEf?= =?us-ascii?q?JciiX8xjVeGZr6h+iLvNqw6GtarVlHEIdv7RLbGKVQJIh7OQ/imsmtWEd8GjP1?= =?us-ascii?q?eNvIeRo2pOqW2uAM7v1xN0TgY48bPhUEy7X95XpOUARuTL/2vlCEXeMef9ZmTO?= =?us-ascii?q?3LrmpV6I16MaMPOkaSpIDypDdStF82GBMpaKM3rjFCakbOnhdaVLrvtbEcjQsc?= =?us-ascii?q?Vdp5uU5SFmKqJGIx+SbIVaRPgKmWEvwV/S2ZTrYSXEVwLiN+XxS11Y1re7uum/?= =?us-ascii?q?BHrmxGkT1mrfgv0jxpXh28tjPwp6MD3jIg4rK4tC4btXxDUOqejz/CCU9fw/QS?= =?us-ascii?q?kaccF3Hi5ESzYHYfd4vy+6BrK9nv+4cn4nQ/ZwgjfiIdUOSvDiH/laWIDZKVvN?= =?us-ascii?q?Jbnh6Nt93EbaWvIigKKrQ91RXjSmB/0gjZnBZo9nEHTSmg7N8gOYWyJMckxiuu?= =?us-ascii?q?GWjAd1YM47hEsNXwtV4VVuQ2bU5uwGR53siBWCINWNTFG3wpgQg8dWVEbJVD5A?= =?us-ascii?q?cbF6k2mDmIuLJL/gUJYDjJE4Sl/ZLQkd3P2XknQtdg3njWqbGdhpM2zH1lnMt5?= =?us-ascii?q?7iyQt3QceezYV9RhA3bp2YdZ1+P+e++hsuYZR4t60L6hSuMNMtG/+Wuq35VnQk?= =?us-ascii?q?ClxrAZH1u3LuADwrPbXjy+SW2fX+SLcnSDkyw/MkHs+RmiNkc3Z9tSr08hLuvC?= =?us-ascii?q?gYZRlw/hUbJ0XiWQolvbzG0/MewEbA82vYanexAQTOEPfeScIvIuwPImAlsWc3?= =?us-ascii?q?DJBTd2C/OxsVO1gIh7OnBg7F7mYeTs7g/mM8WdGh0eHY7csJFx5eSwRnidNn94?= =?us-ascii?q?0B1yIE50+v/aF1Qwte9ccJGRkMPSh9th0u4FcPFtPjM7utIJnIJs95WU2t+QcR?= =?us-ascii?q?7N1pbyOc3Vov+ADvLE0UsqfH1aX6ECYQPx4IU6IsI5W6PNErREpxgcArI6QJM5?= =?us-ascii?q?PWfr6K50NB9zchLWZLmsmsnqoeaLaYFOp37Y6VIwKCnctgYGyvyzSgx7dI6liG?= =?us-ascii?q?noIJA3XTJBtNxtCh1pHIdVHMMAtQWnCYaOmK6nk9+x5196u+gSvKr+FP/K0NW5?= =?us-ascii?q?351vUJVB5E2LPTPRBKx1jUR/iuS9nO3M0p7rCcPtYdkETvR0QnbZar/aGYWyMj?= =?us-ascii?q?yPOtrme05H77GTzql0UhCQZCDlRaqJqjeoNPJ+4UU00oZ4ZvbczCQx77HH39v/?= =?us-ascii?q?f2ZbpiO9onOSLJtf6EbFBffCXxJVVfWF7HxlErMJYofu8ucBL8AiysCG4wZv9D?= =?us-ascii?q?RCzNeFI6+5o0/I20J7c4/bLUTw1yY9WIkKOwi/MVA3jG/YsHvdB3NcItKjKcl3?= =?us-ascii?q?j9afFgbt6FVpmWExem5BHXLlRcyPNmgf2sK+YhCK9Q1MA9gMg+63eVA3tresRu?= =?us-ascii?q?lwIJpIguaqu6sdkdZvNS7PQNNVPzzfLLNsOTpRFOrPrkAyYhEYq7g1Rps1ZZ+W?= =?us-ascii?q?LUMCKkiP1SPyzQrE0U3zbNGsyqeJICAI/XVDzrLF1yVMpgajtfaemM3jX6jTbI?= =?us-ascii?q?vqU/7KLColSjaaSCwwEUmz+lekvOELseGFIWcZvlAUYiWSCBMcpqBvsdjcFGnT?= =?us-ascii?q?lvN/fJcSnvCVRzjwSDFklKo1HitLulqDTOEZFQnXcXDhhHFRuBKmJvBW5nLlbq?= =?us-ascii?q?CYyrBTW+MIHotGaueZTMfAefBCOzcokS0UOOS5f93btbY5yFPITXACHqnO7lKe?= =?us-ascii?q?SVCZQv2GyzLsR4UVsJA+ujA09dLIgi93D6PIMq6Epz6g9463kCeVtO7FW2kzfU?= =?us-ascii?q?M1muMCAWiGwBlGMm0EDc8auF31SK6ae0lMzG4pif5p2xIUegRzVXtu0nlNkfa4?= =?us-ascii?q?BMJWVFAUjGS0QPIacl97FjUw8lGW4l66XdtVpc/XV0da970RVZAaKvg4roXaa4?= =?us-ascii?q?UKx/N85y5ruCw3tW2mClpZig+Uu/7LELlU2qxJ5W5++ep/GE6IXWWMISD81oO6?= =?us-ascii?q?BpcXlm9Vqnf+2p+R5Lhg?= X-IPAS-Result: =?us-ascii?q?A2HiAwDuEadY/wHyM5BeGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBgyaBao5Tj3UBAQEBAQEGmFYriCRXAQEBAQEBAQECAQJfKIIzI?= =?us-ascii?q?oIjAiQTFCALAwMJAhcpCAgDAS0VHwsFGASJPg2yVDomAos7JoYHiVoRAWiFGQW?= =?us-ascii?q?QRYs8ihKIBwKKVIYwAkiSVlh4CBkHAhIIGw89hmJXiD2CLgEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea10.nsa.gov with ESMTP; 17 Feb 2017 15:11:52 +0000 Received: from prometheus.infosec.tycho.ncsc.mil (prometheus [192.168.25.40]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id v1HFAjQh013664; Fri, 17 Feb 2017 10:11:03 -0500 Received: from tarius.tycho.ncsc.mil (tarius.infosec.tycho.ncsc.mil [144.51.242.1]) by prometheus.infosec.tycho.ncsc.mil (8.15.2/8.15.2) with ESMTP id v1HFAitq115497 for ; Fri, 17 Feb 2017 10:10:44 -0500 Received: from moss-pluto.infosec.tycho.ncsc.mil (moss-pluto [192.168.25.131]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id v1HFAggB013656; Fri, 17 Feb 2017 10:10:43 -0500 From: Stephen Smalley To: tglx@linutronix.de Subject: [PATCH] timerfd: only check CAP_WAKE_ALARM when it is needed Date: Fri, 17 Feb 2017 10:13:59 -0500 Message-Id: <1487344439-22293-1-git-send-email-sds@tycho.nsa.gov> X-Mailer: git-send-email 2.7.4 X-BeenThere: selinux@tycho.nsa.gov X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Security-Enhanced Linux \(SELinux\) mailing list" List-Post: List-Help: Cc: linux-security-module@vger.kernel.org, Stephen Smalley , linux-kernel@vger.kernel.org, selinux@tycho.nsa.gov MIME-Version: 1.0 Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP timerfd_create() and do_timerfd_settime() presently always call capable(CAP_WAKE_ALARM) although CAP_WAKE_ALARM is only required for CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM. This can cause extraneous audit messages when using a LSM such as SELinux, incorrectly causes PF_SUPERPRIV to be set even when no privilege was exercised, and is inefficient. Flip the order of the tests in both functions so that we only call capable() if the capability is truly required for the operation. Signed-off-by: Stephen Smalley --- fs/timerfd.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/timerfd.c b/fs/timerfd.c index 384fa75..c543cdb 100644 --- a/fs/timerfd.c +++ b/fs/timerfd.c @@ -400,9 +400,9 @@ SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags) clockid != CLOCK_BOOTTIME_ALARM)) return -EINVAL; - if (!capable(CAP_WAKE_ALARM) && - (clockid == CLOCK_REALTIME_ALARM || - clockid == CLOCK_BOOTTIME_ALARM)) + if ((clockid == CLOCK_REALTIME_ALARM || + clockid == CLOCK_BOOTTIME_ALARM) && + !capable(CAP_WAKE_ALARM)) return -EPERM; ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); @@ -449,7 +449,7 @@ static int do_timerfd_settime(int ufd, int flags, return ret; ctx = f.file->private_data; - if (!capable(CAP_WAKE_ALARM) && isalarm(ctx)) { + if (isalarm(ctx) && !capable(CAP_WAKE_ALARM)) { fdput(f); return -EPERM; }