From patchwork Fri Feb 17 18:24:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Smalley X-Patchwork-Id: 9580497 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 D34AE6043A for ; Fri, 17 Feb 2017 18:21:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C546A28755 for ; Fri, 17 Feb 2017 18:21:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B9C6328762; Fri, 17 Feb 2017 18:21:44 +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 (emsm-gh1-uea11.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 CE8CA28755 for ; Fri, 17 Feb 2017 18:21:43 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.35,172,1484006400"; d="scan'208";a="3282153" IronPort-PHdr: =?us-ascii?q?9a23=3A1Hf3NBLj65isWv4IsNmcpTZWNBhigK39O0sv0rFi?= =?us-ascii?q?tYgQKPj6rarrMEGX3/hxlliBBdydsKMZzbKI+Pm5ASQp2tWoiDg6aptCVhsI24?= =?us-ascii?q?09vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7?= =?us-ascii?q?Ovr6GpLIj8Swyuu+54Dfbx9GiTe5Yb5+Ngm6oATeusULnIduNrs6xwfUrHdPZ+?= =?us-ascii?q?lY335jK0iJnxb76Mew/Zpj/DpVtvk86cNOUrj0crohQ7BAAzsoL2465MvwtRne?= =?us-ascii?q?VgSP/WcTUn8XkhVTHQfI6gzxU4rrvSv7sup93zSaPdHzQLspVzmu87tnRRn1gy?= =?us-ascii?q?gJLT459HzchNJ2gqxVvRmtowVzz5DIbI2QMvd1Y6HTcs4ARWdZXshfSTFPDI2/?= =?us-ascii?q?YYUIF+oMP/tUoofyqFQSohWxGxKsCfjzyjJKnHL6wbc33/g/HQzAwQcuH8gOsH?= =?us-ascii?q?PRrNjtKakSTf66zLHIzTrdafNdxCrz6I3SfRAlpfGDQ7JxetfWxEk0CgzFlU6d?= =?us-ascii?q?qZDlPjyJ1uQNtHKX7+x7Ve21kWInpAZxoia2y8oql4LHhZoVx0jZ+Sh2z4s5P9?= =?us-ascii?q?21RFNhbdK6H5ZcqTuWO5ZwT8g/WW9nojw6xacDuZOjeSgKz4koyADHZvycdoiI?= =?us-ascii?q?/grjVOGMITdknH5leKywhxK18UW41u3zTNO00FdXripeiNXMqnAM2ADT6siAUP?= =?us-ascii?q?d9+Fuu2S2T2AzJ7+FEIEQ0mbLaK54n3LEwioIevVnMEyL5gkn7jLKael869uWn?= =?us-ascii?q?9ejreKjqqoeZN4BuiwH+Nqoumta4AeQ9KgUORHaU+eC91L3l4E34T6xGgeYxkq?= =?us-ascii?q?nEtpDVOdoUprWiDg9J0ocs9xa/DzC83NQehnkINkhJeB2Aj4j3I13OOuz3De+j?= =?us-ascii?q?g1Swlzdm3/LGPrrnAprXMnjDkK3ufbBm5k5ezwozy9Vf6IhPCrEdPv3zQFTxuM?= =?us-ascii?q?bfDh8jPAy+2/znB8ll1oMCRWKPBbeUMKHQsVCS+u0vIPKMZIgTuDb8Nfgo/PDu?= =?us-ascii?q?jXskmV4SZqapwJ0XaGylHvh8JEWZe3XsiM8bEWgWpgo+UPDqiFqaXD9dZnayW6?= =?us-ascii?q?c86S8hCI+9A4fMWJ2igLub3CihBp1WfGdGClKSHnj0a4WIQfAMaDidIsV5iDwL?= =?us-ascii?q?SaChS5M91RGprAL11qZoLu/T+i0eqZLvycN45/PNmhEo9Dx1DsOd02eXQ2FygG?= =?us-ascii?q?wIWyc83Lpjrkxl1leDza94juRFGtxP/fxJSBw3OoLbz+x/F9/9QBnBfsuTRFag?= =?us-ascii?q?XNqmHSk7TsgtzN8Wf0Z9B9KigwjD3iurBL8VkaeGBJkw8q7F3njxIdxxy3Dc26?= =?us-ascii?q?k7jFkmQ9VPOnO8iq556QfTG5bDk1+FmKayaaQcwCnN+X+YwmWVu01YVA9wUb7Z?= =?us-ascii?q?XXAEfEfWtsr26V/YQ7+1F7snNgpBycifKqpFcdDmkVVHRO3+ONTFeW6wlX2/BQ?= =?us-ascii?q?qTxrOLaormYWId3D/SCEIciQAc4W6GNRQiBiemu2/REiRuGkj1Y0Pt6ulzs2u7?= =?us-ascii?q?QVUuzwGLdE1hz7619QQJivOCUf8T2agEuCg5oTVuAFm9x87WC8aHpwd5cqVce8?= =?us-ascii?q?ky4FFb2mLYrAxwJZmgL7hjhlIHaAR2sVju2w9wCoVansggtGkqwxZqKaKEzFNB?= =?us-ascii?q?cCuV3ZPqNb3ULWny4Quia63M1VHd19aW570D6PMiq1XspAupDFYt821709lJ1H?= =?us-ascii?q?uR/o/FAxcIUZLwTEk37QN3qKvGbSk4/Y/U0mdsMaasuD/Yx90pHPclygqnf9pH?= =?us-ascii?q?MKOLCgvyE8kdB8W1LOwqhkSpbhUBPO9I7qI0ONmmd/Se0q6xIOlghC6mjXhA4I?= =?us-ascii?q?1lyUKM+TB8SunT35YZ2PyYxQ2HVzDyjVekqM/3n5pIZTcMEWqj0SLkHpJeZrVu?= =?us-ascii?q?fYYXDmejO8O2yc96h57xRXFY7kWjCkgY2MC3YxqddEH93QhK2UQQu3ynljOyzy?= =?us-ascii?q?ZonDExsqqfwCvOzvz+dBUaJ2FLRXNtjVP3LIeoiNAaWVSnYBIylBu5/0r6wbZU?= =?us-ascii?q?pLhnJWnJXUhIZzT2L31lUqaosLqCYspP6Jc2viVMS+mze06VSqT6oxcA1CPjBW?= =?us-ascii?q?Rezighdz62opX5gwB6iGWFIXZtrXrWZd1wxRDF5NDGWfFR3j0GRC93iTTMAli8?= =?us-ascii?q?Pt+p8s+Ol5fEqOy+UHihVpJLeynx0YyArDe75XFtARCnm/Czm8bnERQj3S/gyd?= =?us-ascii?q?ZqUSTIrBDhYojkzKm6KvpnfkhuBF/998V6AZtyko0ui5EMwXIanIma/WIbkWfv?= =?us-ascii?q?NtVWwbj+bH0JRT4P3dHV+hTq2EptL3+S3IL5S2mSwtB7a9m9eGMW1To379pWB6?= =?us-ascii?q?eM8LxEgSx1r0KgrQ3LfPh9mi0RxuE05HEBhOEJvBYtziKbAr0JGElUISrslxOU?= =?us-ascii?q?4NykqqVYenqve6Cq1EVihdChEK2CogZEVXb6ZJgiGzRw4958MF3S1n3z8Yfkd8?= =?us-ascii?q?fMbd4JsR2UiRjAhfBPKJ0tjvoKmTZnOWXlsH07ze40kAdj3Y+8vIeaK2Vh5qS5?= =?us-ascii?q?DQBENjftfcMc5intjbpCnsaRx42vBo9uGigPXJbzUf2oES4StPT+OwaACjI8rG?= =?us-ascii?q?2XGb3FHQ+Q8E1mtW7AE4i3N3GLI3kU1c9iSwSAK0FEjwAUWTo7koQ/Fg+02Mzr?= =?us-ascii?q?aF156SwJ5l7kthtMzfplNwHlXWfCoAendC80R4KZLBpK8A5C/VzYMdGF7u1tBS?= =?us-ascii?q?FY5YetrBeKKmyGfQRHEX8GWkKDB1D5Mbmh+8PM8+6GCeqiN/HOe6mBqfRCV/eU?= =?us-ascii?q?wpKiyoVm8CyKNsWTOXliCuY22kRdUn9kHMTZgS8ASzQNlyLKbc6Uuguz+jFtos?= =?us-ascii?q?C46vTrVxrl5ZGTBLtKLdVv5xe2jL+GN+GKgCZ5LShX1o8QxXDS0rcSx1gShD9y?= =?us-ascii?q?dzm2DbsPrzbNQ7zKlq9REREbdzt5NNFU4KIkwglNJcnbh8vv1rJigP85EVJFWk?= =?us-ascii?q?blmsGuZc0HOHuyO0/CBEqRM7SGPzLLydntYaygUb1QkPlUtxqotDaVCU/sICmM?= =?us-ascii?q?lyLzWBCpLeFMizqbMQdEt46hdxZhE2/jTMjpahejKt94kSU2waEohnPNLWMcNy?= =?us-ascii?q?J8fFlVrr2I9i5YjPR/G3Za7np5I+mEmiCZ4PPeKpkKsPtkGCB0m/hd4HQgxLtf?= =?us-ascii?q?9DtES+BtmCvOst5upEmrkvGRxTV8ThVOrDdLhJ6MvUh5OKXW6IdPVmje8BIK92?= =?us-ascii?q?WQBAwAp8F5Bd33p6BQ1t/PmbruJzdZ7d3b58QcB9LOJ8KZK3chKgDmGD3JDAsf?= =?us-ascii?q?VzGnL2Xfh1FbkP6I7H2Zt4Q6qp/vmJsOTb9XTlo1Ge0GCk59BtwNPI93Xi84kb?= =?us-ascii?q?6clMMI/mCxrAfLS8VVoJ/HTemfAe71JzaHl7ZEaAUHwajiIYQVKIL7x1RoakNm?= =?us-ascii?q?k4TSB0rQQddNrzV6YQ81r0VN935+Q3Yu1E37cQyt4WUcFfiukh4xkAt+bvwn9C?= =?us-ascii?q?3w7FcvOlrKuCwwnVErltXqmz+RbiD+Iby3XYFOFSX0sU0xPYn6QwZxdgKymkNl?= =?us-ascii?q?OC3DR7JLgLtqbXprhxPEuZtTBf5cSrVJYAMXxfGSffkoy1NcqyS5yk9B/uTFE5?= =?us-ascii?q?ximxUpcZO3s31A3AdjY8IvKqzLOKpF1F5QibySviWwzOA+3BceJ1oR8GOVYCMI?= =?us-ascii?q?u0wJNr04KCez++xs7gKCmzVdd2gQS/oqovVq9kYjNOiaySLvzaJDIFirN+ODN6?= =?us-ascii?q?OZp3TAlcmQT1M2yEwHjU1F8KN10cckaEqUS1ogzL2KFxQKNMrOMwdVYNRO9HLL?= =?us-ascii?q?ZyaBrf3NwY5pP4W6Du3oV/GBtL0KjU2+BgYmA4QM498aEZmtykHXMMDnLLAdyR?= =?us-ascii?q?U3+gvqJE+JDPJXdxKXiD0Hud2wzIdr3YlBITEQGXhyMSKx5rbRuwAlnv6DXNYt?= =?us-ascii?q?b3gAQIQELHU2VNe9my5DsHRKFCO33f4ByAie8z/8oTzdAyTmYNp9ZfebeAhsBc?= =?us-ascii?q?qs9jUl6ai2jlDW8o7AKG7mKNRioN7P6f8appqdDfNbU6V9uV/Gm4ZEX3yqT3LP?= =?us-ascii?q?EdmtKpj0bIksd8L7CnC7U1y4kD81QMHxPMu3IqiPmwHoSp5esJOH0zA7Kc+9Cj?= =?us-ascii?q?YeFg9rp+4d4KJ8ZAsDY4c0YBPzqws+MKm/LxuC3dW1X2ahMz1WQOdDze+ifbxY?= =?us-ascii?q?0zIsbvOmyHsnVpw6zPO38E4XS5EMkhHexe2uZ4ZZUSjrBnNRYQPPqjQll2J5LO?= =?us-ascii?q?Y93v8/wA/UsVkbKz2LaO1paGlDv9EgBVOTIW57BXc5R16cl4XM+RSg37YM8CtB?= =?us-ascii?q?h9xUy/FKsGDivp/DZzKhQLakqZHUsyU8c9cpu6hxMIzlIsuBspPRhCfSQ4LRsg?= =?us-ascii?q?KfVi62DvRamsVKLCJeXvZIhXkvOdYatopZ9UoxSsA+KqRUB6YyoLCnciBrAjMM?= =?us-ascii?q?zSAHTYOAxyYNgv282rfAkReQapsiOgQesJpemtsdTzJ2YiQGqa+sSoXWlmuESm?= =?us-ascii?q?wVLwcW9glD+RwPmZRxfu//5orEVphMyyRZo/hsSCvECoFo90fnSmGRmVX4UvOh?= =?us-ascii?q?k+210gJSy/Ls1sIbVgZmB0ZA3ehbikwmJaprJKkXu47FriWHdVjmvG73zuupOk?= =?us-ascii?q?VRw9XOd1LkFIrFqXb8UioE9H0OX4BP0nbfGo8JngplcqYkvktML56iekb/4Twk?= =?us-ascii?q?yIBpH7i3VcCr21Ylo2wJRz2vE9ZbDeFprk7XUiV/Y5+3sJXlJ4lSQmhI9ZyTsV?= =?us-ascii?q?tWjEVtMy+8yZpdMc5N4SUBXDlRrjqDotS+UspD2dV5D5UUONdwp2/9GL9YOJiW?= =?us-ascii?q?u3A5oKbvymLf+zwms1e33zSzG665T+JF5GISAAMpKHqCqkM3Fesj7n/S8kzRsl?= =?us-ascii?q?Bz5+pbB76PjVlvrzZ5AJ9OAyhG1Wy/L1VzV3RGtP1aJ7rTc8xZWfYyZBuvNAc5?= =?us-ascii?q?Ff8pxUCJ+lt0nXjhaSxoqgRa4zzdXxUzVSQNjbftgycRqse7OTIBSpJIajsgby?= =?us-ascii?q?HZKwKbhy9XvRBfa110VJADGNpF/a8U3ZdM9MrYVUmsMT0FXABlNg8gzfpfkktD?= =?us-ascii?q?vV6EeSzBCAqnbuzDshtpcseNtMSpNuj2/B9bioP7t+A176UDSGe8mQK3RdDRsp?= =?us-ascii?q?TxucCUuUuWbKf3Lem8bmHbTDTWihCwn7gkBYHQ/yfPKApbN4V6yX08bJjjDm7E?= =?us-ascii?q?Iw9LKL8FKEpAS696c8lGrf5HaMN+fqYG57NtDAqdRhzzAIyvsOVGLlHLSDvFIS?= =?us-ascii?q?WO7vCzrIDO4bHTUuXvesuMx3PbTK1tJZd69SP3G7H03o9C4kD2wOti9ltmSVja?= =?us-ascii?q?NCCMtM7hKR0W68mibETiooYkHTfRAJdujnXh2F1Pd80KTCK06pgYzo1W6GroQ+?= =?us-ascii?q?JizkfzqPFS96Vj6YQv+7Bp0tu0Kr3PJvRGqkJnGR+UBhhw9poxHmd/QXxRYvUL?= =?us-ascii?q?J/fVZ6gZitruq+/vHawN9BKV4/BZacfAJ0zZhsm/EC+TRgJZkwoatD4aKhec1+?= =?us-ascii?q?SflK9qSMalouz51Vwx41SkKR4G1r9t75+e+qWUvO/XcwfRzb8cV6f3QMP8tK8h?= =?us-ascii?q?tF6U5fI+jrIOfXZ1YwK/GugHSsEd3nvgzbwtzS80EcPMBajg+PlYV3I9hD3ghY?= =?us-ascii?q?twH1ALGvMQAbqL/JhRnmYilOzfLd0aaKdCmnyAFRS8CL8N1War6zeLIGlimhzO?= =?us-ascii?q?0Qv/QWW97F/sqi93XDXDwsz/kkVPULm3HkBSUzCvOUBmrDOFJBDou8bvuaQp8E?= =?us-ascii?q?E2NXTptNSJlGa6ObNXGcj/KMadISkyqlIXloc+Rsez2YABBNqyPMsR8GxkbvTA?= =?us-ascii?q?8W+rlDVBo6hfjYrE/s6V4unXHWWnj6CCrbWNxSxXyn88vV4l8dCsLPDO59qNQ/?= =?us-ascii?q?SzzGYcVCJ/tgTOXhKvrbzbtV8UM1SR0EjXgIwKIs1Z3X4g2076/ucjRMw89B5C?= =?us-ascii?q?FofAYPMPvivzNyf1wVmBZdI3Siie3CFNElLzD1Z4BLA22Hjss8LRiXfQ51ooS5?= =?us-ascii?q?F0d0z8gBx6D541KUwz51cKxSoDCxICaQiBDLGvB0TqM5cLVVQZZRSAxri6db89?= =?us-ascii?q?3VdvzbO3+O/Tcet8CrIPNvZciw6Dh11bFYwWsKIAWrJ8elld9KHNqgjkFYfnQ+?= =?us-ascii?q?DslWAsOv2tXsBa7ccZumMj4ge+XRWv84tM4q0AiJ+Waq5Lf4TDsNp770d96j4F?= =?us-ascii?q?bjZNjwRnjxOlTeAco/ju7cPasJqz5OehTqQtR+QL9xgsHWt+kp/wjUs/rtHQyu?= =?us-ascii?q?hTVJfaiZnl8ABKOX6FopzW0x5mKeoBM4irZqpv920bJygCIHIDJcKWZOMg4yBx?= =?us-ascii?q?MDXS6VtCAtkPZd8BJ8rChwRUikzvWLFO+cvWAUeYBJ1vd88072r2xjc18YE/Uu?= =?us-ascii?q?r66z+5O4rf71dTMPNHlilsk8jCpOcNy/rIFCcX+WWZawRywi6a15mNEej//eGW?= =?us-ascii?q?x9HSSVwLBTM5U4ZSJDqD5QyoXPG1m4/zUgOJ8MPzhowxdF6ITHyrgKsFqrpMEf?= =?us-ascii?q?JHiijj0ThRDJr1iOyJs9qs82ZXslxHEJpt4h3FAqpfI457NQ7+lsa1Wkh2HjH/?= =?us-ascii?q?d93MdhoypOqWwf8B4+pgOEv4eY8bJRUEx7Xh6XVLSgtuSbj2vkuWXO8KYNtpVu?= =?us-ascii?q?nEr3BP5o56La8AIkSdroTwrjhUsFA2HBMpaLgoozNGdEnBhhFaVr3ot74Hjgsc?= =?us-ascii?q?Vd95tlFWGWKsJm0x+zrHWb5SjKmLB/wf6i+TQbAWU0V0LiN+RAu42JBpe7uvgf?= =?us-ascii?q?BHvX1Jkzh4oPgryTNmQgWzuTHipqIKwzIg+6q4uC8HuXNbUuWUiz3IBklbzPQW?= =?us-ascii?q?kaccDG7v6VOgb3kYd4v++aRpK8vm+4kg5XQ/fBoicjYJXeSlES7wib2HDpaIsN?= =?us-ascii?q?JGix6HoN/OYqOrLSgOKrQ9zgruR3p60gjemhZk6ncEQjWk7N85OYq8OMclxiyz?= =?us-ascii?q?GWjYdVYB+b1JsMrvtVERSOs5dFJhzH9l0seZWi0HXNbPFHotjgg4dWVEd4pO6R?= =?us-ascii?q?4EF6YyhDaFpa1G/hwJbzfVFYSl4ZPcncDS2XkyVd1q3H7ZprWZhpM2131og9F0?= =?us-ascii?q?4TCAuHQcc+zVSMFtDWL11ohB1ezyffOtvf4bSIF+0rSuTOcCMtW/+WuxwJhqVU?= =?us-ascii?q?ulxrMQHlWnNO8DwqzWUzyiSW2eWOSEb3KAnzAnPU7u/ROoNEE4aN9Wr08hNevP?= =?us-ascii?q?npxclw3hULNsQSWQoV7bzHA9Pu4BcgI2uZunexYUQ+ILYOicP+cuyuUkCFQQd3?= =?us-ascii?q?/JATd2C+iuvF6xnYh7Pm5t4Vn7Yevx8QDpLt+SFgMCEYHEsp574ea6SX6ZOX98?= =?us-ascii?q?0B1yO1F59+LeF1Qyte9cdI2cndrKiNR41u4FceliMSsntt4VhI1j9ZGe0N2Wfh?= =?us-ascii?q?HJ0pbyOdbVr+CDDPLByUQqZnpXUqEdYQPy+4U6IsA5VKPOErdDuhQcH6c6SoQ7?= =?us-ascii?q?N2jt7KF0MB9zcgnJabSshcnqoviEZoFapn/R6lIwIjzRuxgEyvyzVgx0cYylh2?= =?us-ascii?q?/1IJArXTJBrtttChR8EItIAcMAoBKtA4SIl6Gjl9+x50R6tvcEsaXuDvDK1cy5?= =?us-ascii?q?0JtqUplb5EyLOTPRC7dxgkRhkOu+mPDA0oP+Ccn6Y9MLSPB7QnLZar/BBoi+JC?= =?us-ascii?q?qOOtj9e0Fa7bGRy7d5UhSNZCDjQaWKriqkNO9r4U8j0Ix3YPLTzCAx77HcwNby?= =?us-ascii?q?YGVbqTm4oH6RMJtQ9kfKBfDfXx1IVfqF6nhqErMNYYvy6ugOLcQowMKA7Alr8D?= =?us-ascii?q?RCzMyFLrClrk/N3EJ7aJ3aIFLt2yY4QokKPA+/PFAtgWDDrHTdBm5QLs++Kcli?= =?us-ascii?q?mNyVFADi51FtmWExYW5MAnHoSsmVOWga3cK+eQKL+AVEAdYfn+64Z1Q4ubOqSe?= =?us-ascii?q?ZyIZhFmvultK8Bkdl3LyHAX9VaPy7KIL9xJDpRAf3FpEI0bR4cr7g1RoA1aICL?= =?us-ascii?q?IEwdLEiAySLyzQ3F0UDvadys1aCJLzgS8nVGybLFzDdNqxO+ufaDjc3pSKrZY4?= =?us-ascii?q?3uXP7OLColUSmXRTYoHkaq/leroOEJvOeeIWcDolAUZT+SCAETpqBzt9TQCHHc?= =?us-ascii?q?mfF7dp0QmP+aQzzwSDF/lKcqCSZEr1uDQ+ACFQbIa3/sm3RcuAi4Kf9X/HLlcq?= =?us-ascii?q?eUxqxLVOwKGoFMaOGWQ8PEefBCIDcljjcZOOO7f93GtbY500nIQHAfE6bS8V2R?= =?us-ascii?q?Uk+WTuabxzLxUoUfp5I0tTYw+tLMgi93FLzFP62Rpz6r7oG1jSWVtPbAVmYzeU?= =?us-ascii?q?w1geMDAG6HwBVaLmELFc0Vsln3QqGcf0ZMyG4pieV21h8OfwRzVHlu32ZTnPmj?= =?us-ascii?q?B8JZR1kUjHmyT/IYdlx3Ci0//VPZqjH1NMIBo8f7VWJY96VKTYsbMelu75PYfr?= =?us-ascii?q?YTk9gz2zczmzA3qyWQCRtmiwuB96fBVPZnyqZq+Xgz//YwWFqGBTzYbD6UmcKd?= =?us-ascii?q?F8tTyHI28jjf3M3Os7UobuNX?= X-IPAS-Result: =?us-ascii?q?A2EZHABvPqdY/wHyM5BeGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBgyaBao5Tj3wGkgOGViiEWINQVwEBAQEBAQEBAgECXyiCMyKCI?= =?us-ascii?q?wIkExQgCwMDCQIXKQgIAwEtFR8LBRgEiT4Nsl06JgKLPSaGB4laEQFoggAMgw0?= =?us-ascii?q?FiQ6HN4s8ihKIBwKBeYhbDIYkAkiDE49DWHgIGQcCEggbDz2GYleIPYIuAQEB?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 17 Feb 2017 18:21:33 +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 v1HIKmwt009640; Fri, 17 Feb 2017 13:21:00 -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 v1HIKj8S115851 for ; Fri, 17 Feb 2017 13:20:45 -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 v1HIKgma009633; Fri, 17 Feb 2017 13:20:43 -0500 From: Stephen Smalley To: viro@zeniv.linux.org.uk Subject: [PATCH] fs: switch order of CAP_DAC_OVERRIDE and CAP_DAC_READ_SEARCH checks Date: Fri, 17 Feb 2017 13:24:15 -0500 Message-Id: <1487355855-3508-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-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 --- fs/namei.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/fs/namei.c b/fs/namei.c index ad74877..8736e4a 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; }