From patchwork Fri Mar 10 17:14:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Smalley X-Patchwork-Id: 9617773 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 1861960414 for ; Fri, 10 Mar 2017 17:13:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0659528742 for ; Fri, 10 Mar 2017 17:13:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EE36C28746; Fri, 10 Mar 2017 17:13:28 +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=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from emsm-gh1-uea11.nsa.gov (smtp.nsa.gov [8.44.101.9]) (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 2151F28742 for ; Fri, 10 Mar 2017 17:13:27 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.36,141,1486425600"; d="scan'208";a="3873609" IronPort-PHdr: =?us-ascii?q?9a23=3AaanoIxTGLq06d1bhoGAhnrITPtpsv+yvbD5Q0YIu?= =?us-ascii?q?jvd0So/mwa68ZxeEt8tkgFKBZ4jH8fUM07OQ6PG9HzBQqsff+Fk5M7V0Hycfjs?= =?us-ascii?q?sXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFRrwLxd6?= =?us-ascii?q?KfroEYDOkcu3y/qy+5rOaAlUmTaxe71/IRG2oAnLucQbgoRuJ6IwxxDUvnZGZu?= =?us-ascii?q?NayH9yK1mOhRj8/MCw/JBi8yRUpf0s8tNLXLv5caolU7FWFSwqPG8p6sLlsxnD?= =?us-ascii?q?VhaP6WAHUmoKiBpIAhPK4w/8U5zsryb1rOt92C2dPc3rUbA5XCmp4ql3RBP0ji?= =?us-ascii?q?oMKjA28HvTisdtkqxVphyvrAF7z4LNfo2ZKP9yc6XAdt0YWGVBRN5cWSxfDI2h?= =?us-ascii?q?YYUBDO0PPf5aooXgqVYBogexCwayC+P00TJImn370Lcm3+k7DQ3KwgotFM8Ovn?= =?us-ascii?q?TOq9X1Mb8fX/2pzKbW1TXDb+1Z2THg44bVdxAuu/WMXbZufsvR1EIiEBjFgUiL?= =?us-ascii?q?qYH+IzOU1vgCs2ic7+Z6U+KvkHQopxt+ojio2Mchk4/EjZ8WxFDc7Sh13Yk4KN?= =?us-ascii?q?KiREN7fNKoCoVcui6EO4dsX88vRXxjtjwgxb0co5G7eTAHyJEgxxHCdfOKa5OI?= =?us-ascii?q?4hf/VOaJJjd4mW5ldKq/hxms9UigzfXxVtWu31ZQrypFj8LMumoR1x3T9seHSv?= =?us-ascii?q?x98l2n2TmTzADc9vtIIUU1larfM5Ihw7gwmYQPsUnbAyP7l0r7gLWWe0k54OSk?= =?us-ascii?q?9evqbqv8qpOBL4N0jxvxMqUqmsyxG+Q4NQ0OUnCA+eui0L3j/Ev5QKhFj/Evia?= =?us-ascii?q?bZt43aJcIHqaGnGA9YyZoj6hajADem19QUh38HLElfdx6dgIjpPE/OLOjiDfij?= =?us-ascii?q?m1SsjCtrx/feM73jBZXNKGLMkKvhfbln7U5R0wgzzddZ55JREL4BO+7zVVHrtN?= =?us-ascii?q?zDFBM5NBa0w+n/AtVnyoweQX6PArOeMK7Ks1+I5PggLPWPZI8Ovzb9Lfkl5+D1?= =?us-ascii?q?gH83nV8dYKao0oAKaHC+AvRmPl+VYX32gtcOCW0KpBYxTPT2iF2eVj5ef3izX6?= =?us-ascii?q?M45jE+Fo2mF5zORo6zj7Oc2ye7BIdZZnhcClCLE3fnaZmLW+sWZCKVOM9hnSQO?= =?us-ascii?q?VaK9RI85yRGuqAj6xqJ6IeXI/y0YspTj1MRo6+DIixE96yZ0D8Wc0mGKSWF4hG?= =?us-ascii?q?UISCEq3Kpnu0xy1k+D0bRkg/xfDdFc+u9JXR0gNZPH0+N6DNXyVR7bcdeSVFaq?= =?us-ascii?q?WNOmDi8tTtgp2d8Bf159G8m+jhDExyerA74Ul7uNBJEv96Lc22H9J8d7y3rc0q?= =?us-ascii?q?kulUMmQshONW24mKFz7Q7TCJDVk0+Bjaalabwc3DLR9GeE1WeBp1pXXAl0UaXE?= =?us-ascii?q?RnAfelDWoc7i5kzcU7CiE68nPRVFyc6DLKtKd9LogE5aS/bjItTefnmxl32+BB?= =?us-ascii?q?mS2rOMd43qe2MH0CXaEkgEnBgZ/WyaOggmGiehv2XeASRwGlL3eUzs6+h+qGig?= =?us-ascii?q?Q08s1Q6KdUxh16Gt+h4Rn/OTV+0c0qgDuCc7pDV+BEy90M7OC9qcuwphe71RYd?= =?us-ascii?q?0n4Fhd02LWqw19Poe7IqBnnl4ech17v1jg1hVsEIlAltIqrHwyxgpoNa2YyE9B?= =?us-ascii?q?dy+f3Z3oOb3YMGry/Beya6PN2VHRytWW+qAS6PgirFXjpg6pHFI483p7y9lVz2?= =?us-ascii?q?ec5pLSAQUITJ3xSEc3+AZgp7zBeCYy+4bU2WdrMamuvT/Iw8gpC/c9yha8Y9df?= =?us-ascii?q?N7uJFA/sHM0eA8iuL/cnm1y0bhIYO+BS8bQ7M9mhd/uc166hJPxgky6+jWRb/I?= =?us-ascii?q?B91VqB9zFySu7S2JYF2O2Y0xCcVzf6i1egvMX3lppCZT0IGGqw1zTkDpZLZqJu?= =?us-ascii?q?ZYYLFXuuI8qvy9RwnZHtX2JY+0C5B1Mdw8KpZwSdb0bm0g1N0EQbu3unmTG3zz?= =?us-ascii?q?ZsiTEmsrKf3DDSw+TlbBcHJnNES3RjjVj2JYi5lMwVXE+tbwc1jhSl/lr6y7Jd?= =?us-ascii?q?pKthM2nZWV1IcDTuL2F+TquwsaKPY8hO6JMstSVYTv+8bEuARbHjuRsa1DnvH2?= =?us-ascii?q?xExDA0bzuqoIn2nwRmiGKBK3Z+tGTZecBsyhfD49zcX+Rd0SYGRCl/jznXCUOx?= =?us-ascii?q?P92o/dWSjZjDqOe+W3imVp1Jfinh1ZmAuzej5W12HR2/mOi+mtnmEQghzS/3zs?= =?us-ascii?q?JqWjvMrBb9ZInryqu7PPl8fklwBV/87ct6FZ1lkocqgpEfx2QajI2P/XUbiWfz?= =?us-ascii?q?Lclb2aXmYXoXQj4Lx9rV7xb/2EJ/KXKIyZn0Vm6AwsR9fNm2eGQW2jgy78pSEq?= =?us-ascii?q?eb8KREnTdpolq/tQ/ReeJynioZyfc08nEWmfoGuA0pziWBBbASG1JVPSnwmxSO?= =?us-ascii?q?6NCxsL9bZGCxfriszEB+h8yuDKmeogFAX3b0YpQiEjF27sVkK1/M02P86of/eN?= =?us-ascii?q?nWc90TqgeYkxDaj+haMJgxjOYFhTJ7OWLhun0o0/A7jRpz0pyhooiHLXhi/KKj?= =?us-ascii?q?Dh5eKDL1e9sZ+ivxgqZGgsaWw4evE415GjoRQZvoSemlHy4TtfT7NweCCTM8pW?= =?us-ascii?q?2dGbbFGg+f8khmpWrVE5+3L3GXOGUZzdJ6SRmFPkNfnQQUUysinpEjEACq2NLu?= =?us-ascii?q?cF1i6zAM/V73tAFMyvlyOxnkVWffuR2oZSsqR5iRKxpW9A5C6FnPPcyY8O1zAz?= =?us-ascii?q?lS/oe9owyVNmybewNIAHkHWkOeAVDjIr6u5dzb/uiWGOWxMvzOYa+UpuxGTfeI?= =?us-ascii?q?wpCv3ZV68DaQLMmPOWNiD/Ij0EpZQX95A9jZmykISyEPkiLCdcqbpBOi9S1rss?= =?us-ascii?q?Cw6u7kVRnp5YSRF7tSKslg9AqugaidLeKQgjh2KSpA3JMW2XDI0KQf3EIViyx2?= =?us-ascii?q?bTmhC7oBuTTITK3Knq9XCB4aZjhpO8RU6qIwxA5NOdTUitntzL53kuY1C0tZVV?= =?us-ascii?q?zmgsypa9YKLH+gO1PcHkmLMqiGJTrQw8zse6yzVbhQgP9Ttx2qtjaRC1XjMSib?= =?us-ascii?q?lzn1SxCvNvlBjCeBPBNEoIG9ag1gCWbiTNL8cR27LNF3jTwwwbIugHPFKW8cPi?= =?us-ascii?q?J4c09Xqb2Q9yxYiO1lG2Nd9nplMfWEmyGB4unANJkZquVkAiJ1l+JG53Q30LpV?= =?us-ascii?q?4z9aS/NrgifSqcRuo16+mOmV1jVnSAZOqipMhI+ToEpiIrvW+YNPWXbe5h0N83?= =?us-ascii?q?6dCw8QqNtmF93vobpfxsLLlKLuLjdN6cjU8dIAB8jTK8KGMH0hPQDvGDHKEAsP?= =?us-ascii?q?VSSrOn3Hh0xBjPGS8WWYroMgpZjygpUORaFUVEcuG/MBEEtlAsYNIJhpUTM/i7?= =?us-ascii?q?KbitAH5WamphnLWMpapozHVu6VAfj3MzmZjLZEZxwOwb7jMIscKJb02014ZVl8?= =?us-ascii?q?hojKHFDQXd9VqC17cgA0uFlN8GR5TmArwU3lZRmi4GENGvOvmR42khVxYeIo9D?= =?us-ascii?q?j24lc3IkHFpCw/kUUrntXlmz+ReibrLKisRYFWFzb0t08pP5PnRAZ1aBe+nVZj?= =?us-ascii?q?NDbFWb1RiaBvdXpsiADCuptCAuJTTapBYBAM3/6XfOko3U5aqiq52U9N/fHFBo?= =?us-ascii?q?d6lAs2bZ6sqGpN2wFjbd4xO6PdP69Jzl9ehqKAoCCoyvwxwA8ZJ0YI7myeYigI?= =?us-ascii?q?t1IUNrM+PSqn4vRs6RCemztEYGUMUeQlrehu9k4mOOSAyDng06JZJUC3LOyfLK?= =?us-ascii?q?KZt3LGlcGWXlM6zlkImFVd/bhqzccjdFKZV1oxw7uKCRsGL9DCJh1Vb8dJ73fT?= =?us-ascii?q?fDyOvvjKwZJ7J4W9DP7nTO+UuKYSnE2kAB4jH54Q4cQZApmszEbYIN/6I74Czx?= =?us-ascii?q?Ut4hnkK0uBDPRIYx+EiikIo9u4zJNt2oldPD4dC31nMSqr/rbXuhMqgP2bUdgr?= =?us-ascii?q?eHgaQIoEOW8tWMChgSFZpW5ADD650+IC1geN8yL8pj7RDDngb9tvfvGUag1wCN?= =?us-ascii?q?uu4zUw77C2iULL8pXZP2z6MdNiusXR5uMcppeHDOhZTbZ7s0fBgYVYQGaqU2HX?= =?us-ascii?q?G96vO5fwc5UsbcDzCnuiSVywlTY1T8b3PNawIamFmh3nRYFRsIaHxj8jLtO9Gi?= =?us-ascii?q?sYGxhuu+EJ/Lh8ahEbY5onfR7osBwzN6+lIAaYyNquRXqtKTtNQvlQyuW6f6BY?= =?us-ascii?q?wzAqbuCk1HsqVos6wPWv8U4RWJEKiQnTxeqiZ4lbVijzBnxdegXUqCUklmhgNv?= =?us-ascii?q?w9zfwlzBPOr1YcLyiBdPZ1Z2xco9E8GVSSLG1sBWo8Rl+TkZTM7Rap37ES+Std?= =?us-ascii?q?mNBU3vdevXflv5/QejSsVLWlqZXIqSYga8Ypo7FpO4z5PsSGrI/eniDYTJTIqQ?= =?us-ascii?q?KKTii6GuFAlddNPiJXXuNImXo/NswcuYtN800xVt0xJ7ZXEqkjuqiqaSZ4DS4V?= =?us-ascii?q?1SIZWJ6A3D0Ggue4xbTakwydf4k8PxMfsZVNmN0dXzRxYiMEq6+pT5/WmHOcSm?= =?us-ascii?q?gXPAcT6hxB5BgGlo9xYu/l4I3ITJtXyzBOuvx6TzHFG4Vv+VbgVm6Whl34R+m7?= =?us-ascii?q?nOyywQJe1vTs3ccHWBRnE0hS2/5Wllc0KLFwM6QQpJPFvSKTeEP1uWLsx/GqJF?= =?us-ascii?q?9Pxs3Ib1f4FpbKtXLgUi0A/n0ZXZVPx2vFFZQViAV0c7orpE9WL4C4ZEn+4z0k?= =?us-ascii?q?x4JmH7m8VMCryFYlrWoIRyiwCdpBDvtqsFTJVz15e5qrsonqO41OQm9M/52Qs1?= =?us-ascii?q?lYnF9xPC65yJpcLsBN7SQPXDVUoDWSosW9R9NZ1c9xFZ8MLc91u23hF6NcJJiR?= =?us-ascii?q?v3o2t6T1xX/D5jA8tk22xDaoFq+5TuJZ/nEeFR4zK2SYtEYvE/Mm8n3O/VDVrl?= =?us-ascii?q?B04+BbC6COjUV3vDZyAJROCShM1X+7M1RzVnlHvv5dKKTNbcNcRfwyagWuOxw6?= =?us-ascii?q?DvEm2EOI8VtznXfjbCx4rhFa9DzFXwkoSSkVha/gmTIEqs69Pz8aV4lFbTQmby?= =?us-ascii?q?bLLQKbhSBXswhea0FsR5AWHMxF96sd3YRK4srIUVysJj0dXBx+KgI41uJSlVJE?= =?us-ascii?q?sEWdYi3dERakdfPUvRFte8eestKpJuzj/AhbkoPnrPw496IbSn2mgwKtW8rRr4?= =?us-ascii?q?vhudCRq0SBar/4M/Wibn/FUjfMlwq8hbA+D5nF5yLTKhZUK4FmyXo4ZpjsEWzL?= =?us-ascii?q?PRNYKK8AOkVUS7t6ZstcouBGecBrZbwF+alzCRKbXhnvApCgrOFaLlbPQjTTNz?= =?us-ascii?q?6O8uKjro7P77HRVObta9eQyHbARqJ4Io116SLnG7vw149R5Fb20O939kxmUVjG?= =?us-ascii?q?LzyBrNP5KwMR+sata0visYc1HT7NBJdwl2TtyV9ee8ULRC2l7YoXxIlf6HnuVe?= =?us-ascii?q?JyylLzv/FK97l49Yk35Khkyd+vJafOM/tVrFNnDwOPBgVt65UtGnRwSH5XYu8N?= =?us-ascii?q?MvfeZ6AZgdrpq+DtGKwd8AeV9PBBadvbO0HBndGyCi2GSRNagggOtCUXLhaY1/?= =?us-ascii?q?6Zga97U9ilpen+2kIp/Ve+MgQKzLd35YeL4qCIvvPYbwPNzbgYXajnXt78rrI2?= =?us-ascii?q?tE6J+PIkkqQBdnZyYw29H+gXTtQdyXv4zaA20SIsFNvOH7D69/5ZUHI5hTbglI?= =?us-ascii?q?pjH1gNH/MUAL6L/ZhfnmgkmuzWLNsWcrtYlmaIDx6kHacIyWS35CuPPGllnhbO?= =?us-ascii?q?3gnyQWyp6l/2ozV4QSzRwNj9iUdVSqO4BUFJXyquI0N4ti2APBbwvtrtpas19F?= =?us-ascii?q?02MnDjtN+VkmuhPKhaH8z5JNyZOyU0pVQXjJMrRtO1woAbBcC9IMoN/3Fic/ve?= =?us-ascii?q?8X2knzVGo6ddiIrU+tuV9enPHXm8k62arK2AxDZZynckulE/7sqvNurU692LRP?= =?us-ascii?q?So0H0RTzxktgvEUBO0pabXr1cOOUyEyE3LgpAFPslF3Xkk0UHr/PQsT8g39ApA?= =?us-ascii?q?DYbAe/MDpTfoNTvv3VmfYsw4Vi+C0ztWBF35C194F7Yg2GjopsLGiW/Q+0E0Ro?= =?us-ascii?q?l3b0HngQd3D4A4JE825lgY3DcMEQ8XaR+BFLGoH0PlLYkaWkcfdRSLxr+6er04?= =?us-ascii?q?3Udr2LOg+PfTbfBgB6oKLvtdjA+OnF1AF5ITr6IfQKxze0Vc9K7RqQjuEY7nUO?= =?us-ascii?q?b6lXAoL/26Xtha8dwFt3sl+gu/Rhuh5o1Z4LkHk52IbbBLYYTSs89g9Utn4iQP?= =?us-ascii?q?diNVihhlkxy5SfwcpPzk4tXDq5Wo6/2uVag3SOUV9hg0G3x+gIHtgFAnutzYy+?= =?us-ascii?q?BcRZDLhovl7QBNOXmKuJzA3BVmLuoOMY2rdq5693obPygeO24OPd2OZvkk+SBt?= =?us-ascii?q?LCnc51xMA8MLf9MYP9PBmRtKhU3tWbFT8NfbG1CDBodrbc8o83b4yDA78Js7SO?= =?us-ascii?q?bg6yW6JZPB4FFXOfNMkiFsmMjFpOgPzvrYEDIX7mWBaxhp3iOCzIGAC+rq/eqS?= =?us-ascii?q?zNHbTVUGETAtXohAJTqC9g2nRvavm5XySAyU8NLzjIg4dE2OWny7hL4FvbpUEe?= =?us-ascii?q?5cliX72SBTFo/viPKPrdWs9GtXu0ZDEIZy8R3KBqVfMY9mORTjjMWrQFZzBjfn?= =?us-ascii?q?csHOahUuoPaWxvsL4+hmOEvxe4kbIg4Dy7L97nZVVRVhSLr3vlafQOIQa8BrSP?= =?us-ascii?q?faoXBP6YNvMbUDPF6Dq5z2tj1Iskw5ABc1aL8sqTxXblXBnA9PVKnoo7MPlgwc?= =?us-ascii?q?Udp9uU9NB22wIn4+6CTbWqRVlqWRD+YV8jqLRKwUT0poKj9+Qw+y2Jh2frupmv?= =?us-ascii?q?ZHsn9Jnixju/Uq1j1mSwG6uSLyu6IM1zUg+Ku7tDUao3BFSPuRkzvQA1VZ0PsK?= =?us-ascii?q?lbscC2rl6VGkb3kMcJDy4KJ+Kcr9+ocv5XU/YRM+fywJRumgBCTwgLmOAoORqt?= =?us-ascii?q?5cgwSNuMrWZ7+pMScSLqg9yQ7kR3Vl0AjemxZo8G0RTjq87N8kIJi9Ntskxyqp?= =?us-ascii?q?H2jbb1UM4qJSvcvvtF4LUvE5aVd8z2ViyMSHQDMCRNDXEWYvkgckcXlEcI5E6R?= =?us-ascii?q?ICFqkonCyHvq9d8wEQfTfbD4Wl+o7LncvS3nk9V9hqzHrMpqKZnpMqzGFlm9Rs?= =?us-ascii?q?4y6MpnsSeeLYU8t3D3n9zIhfz/LxZ+m3vuABVoRm1KyrUOUePcm75Wu2xJJqV1?= =?us-ascii?q?eqxrQaGFq4PvEMxrPfUyq+Um2YXuKLc2mQkDojNE79+wWoJEUtaMhWt089LvfC?= =?us-ascii?q?hplEmg3jUbN1Rj2QpVjfzGwiLeMVaRk7uIKmewwWVu4eefKQJe80wP0xEFEMdW?= =?us-ascii?q?PGHTNqC++qtl6ghJR7O3Rl4UjhfeTt8xzpMNiMFRkAC4LaqIB++eCiTGKbJXBg?= =?us-ascii?q?1AFyPFVz9+rHElQxt+xcc5WWndXLhdR0y+0Fd/BrMSIjvN4fgIRj5peI0M2Sax?= =?us-ascii?q?He0o7yJc3JovifG/DQ1FolemdGUrcCegP144I6PsIlW73NA7RWoA4QBa8gQJwu?= =?us-ascii?q?L23x7r17LBtvcg7NY7S5mtHqpuWPZpROvX/X4FUwLCPSuxAYz/y0Sgt7b4u0iH?= =?us-ascii?q?ruOpAwQSlBr8ZsChtgE4tDAcQArxCoA5SMgqG0l8ex+19mu+8NqafwBO7F1NC4?= =?us-ascii?q?34VpQZdX/k2KPDfUBKlunEtllOCyjena3pn2E8PidssOVPJnTW7ddr/GAoK/Jy?= =?us-ascii?q?qAO8LkYU5G8qKT36xiXxWUZSD5Q7CGuzO+OPVj+0U7xZRyfPDPwzw187HbxNzy?= =?us-ascii?q?anlcpiens3GEL4Nf7FjQCuzFQxJUSOaK8Hp/HaIJc4T47uEOPsI+wNKE+Ql88C?= =?us-ascii?q?xC0NeZI6imtkLM3kN7dZTGLErmwio5XYgKIA+jMUs3mmLZq27SAXJbLsS+Lslt?= =?us-ascii?q?mtmVBAT350ZtgWEtenJBGm3wSNeKJ2cb38O+ZAuX9ANECNoNkPK3eU4mua2oV+?= =?us-ascii?q?ZoIo9KlP6ptLoZi9ZpLT/ARMxBMCHNI796JD1RDv/ApFIweB4Lr6A1WpspZZiJ?= =?us-ascii?q?OE4HNV2Pxj/yzQvD1030cMeh1LiIICYQ7HpHy7PF0T5Rpwi2o/qZhdfjUL/BZp?= =?us-ascii?q?HsQPHSKDYlVi2dRTkqE0am41Sku/0fs/eDPGcfpEwUYiKVCA4OqaBvrcTQAnXV?= =?us-ascii?q?meJ9YJ0AnOqaVDzoSC1kiKoyAT5GtU+WTPUYDwnWbmHugG5HtQy8Iv9D52nlb7?= =?us-ascii?q?yFxqZPXewZHJdMeOWDQ9TEYfBeOysoljIBNea+et3cqKw50kjJTWsCCKTI8keR?= =?us-ascii?q?TEuITfyd3T7rWp8Vv4cssCoy5t3QhjN3E7jPP7uHvD6u/Iu4gzqZtODdTWQtfV?= =?us-ascii?q?I6gPgDAGiAxxlALnsIC9cLt0HxWqSAfVpD1Go1ieJy3B8BYAZzUnpo0n1Sh/u9?= =?us-ascii?q?H9NWRkMajGOpWv0JcE54ACk2/UCU/g2hKeAH7N7SXWh25LYKSJRbKPgu9ZmRP7?= =?us-ascii?q?EfhusqmHpkqSk3qGOZSVZalBiE6ILXBqt3wrAE7m49u7ltU1uAThvfe2zD24zg?= =?us-ascii?q?AMVKgW92qG3g/9Ldo+QoMbxdvYw/C1APRWp0IdDbuzJGUWjywwa0lx2yGjOYIT?= =?us-ascii?q?kQ5HAAIilWWPxyyrpArBvQdtvHoXiVvqYlpVrjXR2HEZKoyZdLDYfvzgz+Zi5V?= =?us-ascii?q?J2b4X6tqo+pAwY5BKZgsYpKzVhWbdgU=3D?= X-IPAS-Result: =?us-ascii?q?A2HxBQD83cJY/wHyM5BdGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBgyaBa45hjy4BAQEBAQEGkgeGWSiEWINuVwEBAQEBAQEBAgECa?= =?us-ascii?q?CiCMyKCSAIkExQgCwMDCQIXKQgIAwEtFRgHCwUYBIlSDbNhOiYCikIMASWGCYl?= =?us-ascii?q?aEQGCaAyDDQWJGoc+i2SKHogaAoF5iG0Mhi4CSIMbj11YewgZCQIUCB0PP4ZzV?= =?us-ascii?q?4dsgi4BAQE?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 10 Mar 2017 17:13:14 +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 v2AHBwbP008906; Fri, 10 Mar 2017 12:12:14 -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 v2AHB60x287319 for ; Fri, 10 Mar 2017 12:11:06 -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 v2AHAxf7008654; Fri, 10 Mar 2017 12:11:00 -0500 From: Stephen Smalley To: viro@zeniv.linux.org.uk, james.l.morris@oracle.com, serge@hallyn.com, paul@paul-moore.com, john.johansen@canonical.com Subject: [PATCH] fs: switch order of CAP_DAC_OVERRIDE and CAP_DAC_READ_SEARCH checks Date: Fri, 10 Mar 2017 12:14:18 -0500 Message-Id: <1489166058-11789-1-git-send-email-sds@tycho.nsa.gov> X-Mailer: git-send-email 2.7.4 X-Mailman-Approved-At: Fri, 10 Mar 2017 12:11:57 -0500 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-fsdevel@vger.kernel.org, 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 generic_permission() presently checks CAP_DAC_OVERRIDE prior to CAP_DAC_READ_SEARCH. This can cause misleading audit messages when using a LSM such as SELinux or AppArmor, since CAP_DAC_OVERRIDE may not be required for the operation. Flip the order of the tests so that CAP_DAC_OVERRIDE is only checked when required for the operation. Signed-off-by: Stephen Smalley Acked-by: John Johansen Reviewed-by: Serge Hallyn Acked-by: James Morris --- fs/namei.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/fs/namei.c b/fs/namei.c index d41fab7..482414a 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -340,22 +340,14 @@ int generic_permission(struct inode *inode, int mask) if (S_ISDIR(inode->i_mode)) { /* DACs are overridable for directories */ - if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE)) - return 0; if (!(mask & MAY_WRITE)) if (capable_wrt_inode_uidgid(inode, CAP_DAC_READ_SEARCH)) return 0; - return -EACCES; - } - /* - * Read/write DACs are always overridable. - * Executable DACs are overridable when there is - * at least one exec bit set. - */ - if (!(mask & MAY_EXEC) || (inode->i_mode & S_IXUGO)) if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE)) return 0; + return -EACCES; + } /* * Searching includes executable on directories, else just read. @@ -364,6 +356,14 @@ int generic_permission(struct inode *inode, int mask) if (mask == MAY_READ) if (capable_wrt_inode_uidgid(inode, CAP_DAC_READ_SEARCH)) return 0; + /* + * Read/write DACs are always overridable. + * Executable DACs are overridable when there is + * at least one exec bit set. + */ + if (!(mask & MAY_EXEC) || (inode->i_mode & S_IXUGO)) + if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE)) + return 0; return -EACCES; }