From patchwork Wed Dec 7 12:15:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gary Tierney X-Patchwork-Id: 9464379 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 6883460512 for ; Wed, 7 Dec 2016 12:17:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5BB8F284E2 for ; Wed, 7 Dec 2016 12:17:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 50737284F9; Wed, 7 Dec 2016 12:17:06 +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,FREEMAIL_FROM, 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 E500C284E2 for ; Wed, 7 Dec 2016 12:17:04 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.33,310,1477958400"; d="scan'208";a="1355936" IronPort-PHdr: =?us-ascii?q?9a23=3AoJPXKRNN4EhUfNprdpMl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0LP/8p8bcNUDSrc9gkEXOFd2CrakV0KyL6eu5ByQp2tWoiDg6aptCVhsI24?= =?us-ascii?q?09vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7?= =?us-ascii?q?Ovr6GpLIj8Swyuu+54Dfbx9GiTe5b75+NhW7oRveusULgIZpN7o8xAbOrnZUYe?= =?us-ascii?q?pd2HlmJUiUnxby58ew+IBs/iFNsP8/9MBOTLv3cb0gQbNXEDopPWY15Nb2tRbY?= =?us-ascii?q?VguA+mEcUmQNnRVWBQXO8Qz3UY3wsiv+sep9xTWaMMjrRr06RTiu86FmQwLmhy?= =?us-ascii?q?cdMz4y7X/ZhMp+gqlGpB6tvgFzz5LRbIyTKfFwfL7SfckCSGRBQMhfSiJPDIC7?= =?us-ascii?q?YYQNAeoBJeRVo5TzqlQBsRSwChejBPj0xz9UhHL7x7E23v49HQ3Y2gErAtIAsG?= =?us-ascii?q?7TrNXwLKocUPq6zLPIzD7ecf1W2Cny6JLOch8/ofCHQLV9ccXLxkk1FwLJlEmQ?= =?us-ascii?q?qY37MDOP0OQCrWia4vFvVeKqhG8rsR1+oj+qxso1jITCm4Ebykjc+Clkz4s4Ks?= =?us-ascii?q?e0RU5mbdK+DpdduD+WO5FrTs86Xm1luyY3xqcItJO0ZiQHzI4rywDBZ/GIdYWD?= =?us-ascii?q?/wjtW/yLIThigXJoYLe/hxGv/ke+0uD8Tcy00EpSripCj9nMqmgB1xzN5ciDTf?= =?us-ascii?q?tw5luh1iyV1wDS9+FEOlo4lbbbKpE9wr4wkYAfsULfES/thEr6lqqWdkQg+uSw?= =?us-ascii?q?6uTnZKvppoOEOoNphQzzPb4il8yiDegiLAQDUHaX9f6h2LH7+E32WrRKjvk4kq?= =?us-ascii?q?nDt5DaINwWprWnDA9R04Yj7Qu/Dji/3NsDmnkHMVRFdw6ZgIjyIFzOPPD5Auu/?= =?us-ascii?q?g1SrijtrwevGMaf7DpXCKXjDjq/tfaxh5E5E1Aoz0ddf6opUC7AAJ/LzXFT8tN?= =?us-ascii?q?ncDhMgMgy0xfzrCNNn2YMEWmKPA7GZP73IvV+O+O0vP/GGZJUJtzblN/gl+/nu?= =?us-ascii?q?gGcillAGeqWp2ZoXaGukHvR9OUmZemTjjcsbHWcRoAU+SO3qiFufUT9cfHu9Q6?= =?us-ascii?q?I95ismCIK9F4vCSJqigKCa3Ce8GJ1afGdGCkqDEX3wbYWLR+8MaD6OIs9mijEL?= =?us-ascii?q?S6ChRJU71RGvrw/30KJnIfDO+i0ZrpLjzNx16PfPmh4s7zB0CN6d026VRWFugm?= =?us-ascii?q?wIXyM23Lx4oUFlxFaD0Kx4g/lGGtxJ/P5JXBk1OoPbz+xgEd/yQhjBftCLSFm4?= =?us-ascii?q?XtqmHSs9TtUrw98Be0x9Acmtjgjf3yq2BL8Yj7KLBIYu/aLaw3fxJt19xm3D1K?= =?us-ascii?q?k5jlkqW9BPNGO9hqJl8AjTHYHJmV2Dl6m2baQcwDLN9GCbwGqNpk5YUwlwUbje?= =?us-ascii?q?UHAcfETWrtP55l7YQ7+pE7QnPRNLydSeJatSdt3pkVJGSe/5N9vDeWKxmnm/BQ?= =?us-ascii?q?yTy7yWcIXqfn8R3CLHCEgLiwoT52qJNRAiBie9pGLTFCBhGkjrY0zy6ul+tHO6?= =?us-ascii?q?TkgvwgGRc0Jh1qS6+hgJhfydUfwfxLQEtzk9qz9sBlayw8rWC8acpwpmZKhcYc?= =?us-ascii?q?0y4FND1WLerAF9OoGgL7xlhl4baQt7pUTu1w94Co9Yi8glsGsqzBZuKaKfyF5B?= =?us-ascii?q?bD2Y3Yr3Or3MNmn/5wuva6jR2lDQ1daZ4KEP5O4+q1r9oAGjDlAi/Gl/09lJz3?= =?us-ascii?q?uc4Y3HDQQIXpL1TkY46QJ6p6rBbykj+YzUz2ZjMbSxsjPY3NIpHuQlwA66f9hD?= =?us-ascii?q?KKOECBPyE8oCCsiyNeMlhlmpYQgAPO1J6KE0OMameOec166wIOZshjSmgnpb4I?= =?us-ascii?q?plyEKD6zJ8SvLU35YC2/yY2AqHVzP4jFi/qcD6gppLai8IHmq40yTkA5RRZqJq?= =?us-ascii?q?d4YRFWiuO9G3xsl5h5P1RnFX7kKjCEkY18+ndhufdEDy3Q1K2kQNvXyohzG4wy?= =?us-ascii?q?Zykz43sqqVxDbOzPj6dBobJm5LQ3FvjUntIYeok9AaW1KoYxI1mxul4kb6wadb?= =?us-ascii?q?qb97L2nSR0dHZTL2L2Z4Xqu3rLqCbNZF6Ik0viVPTOS8fVeaR6b5oxsbyCPjA3?= =?us-ascii?q?JSxCsleDGuu5X5mQF6iW2GIXZotHrZeMdwxRbD69zHX/JR2CQJRDVggznNGle8?= =?us-ascii?q?J8Wp/cmTl5rbqOC+UGahVplNfinx0YyAsyW66HZxAR2ig/+zgcfrEQ8g0S/0z9?= =?us-ascii?q?NqTznHrA7gYon30KS3KfpncVN1BF/48cZ1AJtynZA3hJEUxXgagZOV8GECkWvv?= =?us-ascii?q?N9Vb3r7xYGALRTEV397f+BLl11F7LnKV24L5UW2Qws5lZ9WjfGwW3Dkw795UB6?= =?us-ascii?q?eQ6LxLgzF1rkC+rQ3Pffh3hi0dxuc26H4Gn+EJvxIgziaDDbAUBklVJi/smAqO?= =?us-ascii?q?79ClqqVYenqvfaK31EpkktCrFKuCrR1EWHblZpciGjd97t1lP1LR1H389Jnkd8?= =?us-ascii?q?PWbdIPqBKUiQzNj/VOKJ0vjPoKnjBrOXn6vX040e40kQJh3Z+9vIidJGVi4ri1?= =?us-ascii?q?AhhGOT3pf8kT4C3ijb5CnsaK2ICiBothGjMWU5bzU/KoFi8dtfT9OwaIDjI8tm?= =?us-ascii?q?+RGaDDEg+H9Edms3XPHoizN36NOXkZyc5vSwWcJExDgAEYRTs6kYQ/Fgyww8zh?= =?us-ascii?q?akh57CgL5lHkshtM1v5oNx7nX2fcpAaobik7RYOaLBpR4AFC6VnaMdCC7uJzGC?= =?us-ascii?q?FY+4OuoBaLKmOFewRCFXsJVVCcB1D/Irmu4sHN8+aCCeq4M/vOZrCOpPdQV/iW?= =?us-ascii?q?2J2v1ZFm8CyUNsWVOXliDeM01VZfXXxjHMTZgToPQTQNly3Rd86buAu8+ipvo8?= =?us-ascii?q?Cw8PTkRBjv5IuXC7tONtVi4Ba2jrmfN+6LmCl2My5Y2Y0WyX/O1rcfwEYYizty?= =?us-ascii?q?eDm1DbQAqSnNQbrNla9RFREWcD58NM1S4K4m2QlNI8HbgMvv1rFklv41F0tFVV?= =?us-ascii?q?v5l8Gzf8ALLXuxNFbdC0aPM7SHJSbGzNvrbqO5U7FQi/9UtxKoszaBD0DjJiiD?= =?us-ascii?q?lyXuVx23N+FMljuUPARGuIymfBZtCHLjTMn6ah21Md93iyc5wbsoiXPLL2EcNS?= =?us-ascii?q?Jwc0RXrr2f9SlYmOlwG3Rd7np5KumJgzuW7/LGJZkMvvtrGD57l/xB7XQh0bRV?= =?us-ascii?q?7zxEROZvlyfIqt5uvlemnfOVyjZ+TBpOrTVLhYKMvUl4P6XW6IVAU27e/B0R9W?= =?us-ascii?q?WQFwgKp9x9B9L0uqBQxd/PlKToJThf7d3b5socCNLSKM6dN3ohKxXpEibODAQZ?= =?us-ascii?q?VT6rKX3fh0tFnf6I+X2atIY6pYb3lZoJUr9USlo1FvYABURkGNwNO5B3Xzw+nb?= =?us-ascii?q?6cls4I6mK0rAPNS8VCopDHSvWSDO3zKDaeiLlIfQEIwbT5LIsNMI30wFZial5k?= =?us-ascii?q?k4TJAEffQddNoih9YQAuu0VN7GJyTmst1EL5cgmt+mMcFeaonh4qjQtzeeQt9C?= =?us-ascii?q?vs41cwI1rFvjAwnVI0mdXknTCRaiD+IL23XYFMBCr+r1IxPY/jQwZpcQ2ymlRp?= =?us-ascii?q?NDHaSL1Li7ttbmNriAjHuZtTA/FcS7ZEYBwRxf2NYfUnz0hcoD29xUBb/evFFY?= =?us-ascii?q?dilAwyfJ62sX1AwBxsY8QvJaPMJKpE1UNfhqOUviC10eAxzhceJ1wT/2KSYiII?= =?us-ascii?q?vlIHNqU+LSqy4uNs8RCCmydEeGUUSvUluOxq9kIgNOSb1C/vyaRDKlq2N+2RNK?= =?us-ascii?q?OWpXTPldOSQlMxykMJl1NJ/b5o3sc/a0CUTVwgzKONFxQVMsrPMQ9Vb9BM+3fO?= =?us-ascii?q?ZiaBq+PNwY5yP4WmDe3nV/OBtKMOjkKjBgYpEJwG7t4dEZm0zEHYMcDnIaYByR?= =?us-ascii?q?Uq/gTkOlOFDfVOeB+QnzcHpdy/wIVw3YlHKTEXGX99Pjmv5rbLug8qh+KOXMwo?= =?us-ascii?q?bXceX4sEMG82WcKhliFFuHRACSW43fgCyAie9TP8oDrfDCXkZdp5ePiUfQ9sCM?= =?us-ascii?q?2x+Tgn7qe5lVvX8pLYJ2HmKNhvocHP5v0Ap5aGCvJUSr99v13am4ZGW3ygS3TP?= =?us-ascii?q?HsKtJ5jsd4ksasT5CnWgUl2/kT01SdvxPNa2I6iHhgHoXZpbvJOd3D89Kc+3Di?= =?us-ascii?q?seFAtop+Ef+KJ8YhUOY4Y6YR7tsAQ+K6y/IQeD39qzQmasKSFZQOJFweW8ebNX?= =?us-ascii?q?0zImbvWmx3s4UpE60+63/FYCRJEQlB7ew+qjapJfUSj0FH1dfRnPpSonmGhgMO?= =?us-ascii?q?Yy3vkwwAnSvVkaLT+LaPRjaHZYsNEkGVOSPXJ2B3IiSF+YjIrM/hCj0KgX/ypd?= =?us-ascii?q?mdZU1utFv2Lls5DEYTKjQqqrpYzbsyo9d9QmpbN+MZD7KMucqJzehiDfTIXXsg?= =?us-ascii?q?CdSyG1Cfxal8NKLy1FXvlHh3slOdcctopb6Us9TMA+J6ZACKM0vLCldSJkDTIO?= =?us-ascii?q?zS8eT46AxjoCguag1LvakReQdI8iPgQdvptfmNUQTyl4bzgCq6+kUoXZi3WLSn?= =?us-ascii?q?MXIAsJ6wRD+h4AnJdqfu/5+IrIUINMyzlOrv1oUCvEDIVn+kDnRWGRhVj4TPSh?= =?us-ascii?q?nPKz3QJO0v3jztkbVAR4CUhHyOZcjlEoJ61vK6kMoo7KtSeFdVngs2L3z+upP0?= =?us-ascii?q?JcydHOd1LiEorKq278Uiwa+X0bQY9PyX7fFZQOkwp3cqkrvlBMLJqgekng+zwu?= =?us-ascii?q?355pEKWgVcC321Ylqm4LRiewHNpaEe5mtVPXWDt+bpCqtJXqIY5STXNK95GHrV?= =?us-ascii?q?dWjlltOTajyZVAM8FN/iIMXD9XrDSTpte9VM1D2c5zD58NONh/uGzwGKJaN5eP?= =?us-ascii?q?vXI6oLvvymXW+zokqle12C2zG7OkT+Je52AeAgIpJ2CEpUk1Aeos9WPS8l7Wv1?= =?us-ascii?q?Bx+OdbAaOPglttrzZnGZBOHS1J1XGjL1R8VnVGtP9aKKvNecxGX/YyfQOvOwA5?= =?us-ascii?q?FfM+xUOJ51x0nXHjbyxxrQZa+iHdXwgoVSYOmLvtnyMRqt2/Mz8AV51IdSkhbz?= =?us-ascii?q?vCKw+DhSBXuxNfZlp2W5wFB9ZK4KsX3Y1K8creUUysMz0KXAR+NgIk1vpSjU5D?= =?us-ascii?q?v1+CeS/HCQqnaO3CvQBpcseJtM6mMvD58xldio/9t+A47aoDTWW8mQKxWdDes5?= =?us-ascii?q?P8ttqSu0uMc6f3LfaxbmLfQzjXkx+wn6skAIfX8CTJNgpUNYV6w2I+YZf9EW7L?= =?us-ascii?q?IQhGJ6UDKkVAW6B1dclKr+JHa8JqY6sG5ahtBhebSRz1A4yvsONKLlDNSjTCNy?= =?us-ascii?q?+B6PCwoZrP7bzBTujtftaMyGjaTKJ3JJh69SL2G7Pt0Y9A5EX6xOti9kRnRlfY?= =?us-ascii?q?KSyBqsruJh8T7sm4akTipoEpHS/RAJpoiHrt3V1AeNAKTC2265kY05RZ6GvqSe?= =?us-ascii?q?1kzEfztvFS96N+5okz+bxpzt20JajKI/RArUBnGgSUBhlt9pg1HGh/XX5ebfEM?= =?us-ascii?q?J/rKYKQZidzuq/rtGKwJ6R2V/OhZZsXbJ03bncm/ED6cQwRenAgdsT4aMhec1/?= =?us-ascii?q?mdlq9xU8mloez51Vwx41iiNBEJ1qtg5YGa9aqUv+/YcwHezaAaVaTwQMP8sKgs?= =?us-ascii?q?sVuI5fI4jL4OZnB1Ywq/HegfTMEd3GDgzbsuzS02DcPOBLfg+ONHV3IlnzLvh5?= =?us-ascii?q?F9EE8QGvMPB7aL+p5enmggkezDKtIWarxCmnqIFRO8EL8N03ir6yWNIGlinx7B?= =?us-ascii?q?zQr9QX+p41/wti94RjHAz9H9nUpJTrO3H1tdXzK1OU9ktzOCJAXotMf2uaQx6E?= =?us-ascii?q?E5LGnkucmQm2S/I7xXHtfwJNqGLSkzvlIXg4U7Rsaz1oADBdq9PNAR/Wl4bvva?= =?us-ascii?q?8G6rkilBo6Jdi4rf5MGV9O/XEmO7j62GsbWN2SxXymQlvVEl9N+sLPbO58eFQ/?= =?us-ascii?q?6wzWYeUz9/uxfdXx6ysrHbqlcUOUqX0EfEhoMHJdRZ3Xgi2UHg+ucjXNwy9AJE?= =?us-ascii?q?FobDfPMOvzbzNyXowVyHedI4SjGe0ydLHlLyCVR4ArUz13/rscLGkHfR9EckRo?= =?us-ascii?q?9ueEz7nRZ3FZk3KVox6FgLxSoOCQwNaQueDLyoHknlI5ULWlUEaRSdxre6Yr03?= =?us-ascii?q?3Upxwryx+ODTcfZwB60XNvZSlgSOhkRUGooKsa0CR7JxY1pd9KrJqQjnDIjoQf?= =?us-ascii?q?zmmGE/NfKrRcBa6tgZuGE+4ga+XRWg7ZZD77AHiJ+Wcq5EZZnMvM9i4Edh+TEA?= =?us-ascii?q?aDZBgB5hgBOlSeocvvzs4sDHsJq07eajTL0tSP8J9xcuCGRxkYDwjUs4od7Nye?= =?us-ascii?q?dTUILVhprk8AxXJX6Fppra2QFmKeUSM4KrYKpg93IfKigcJnIOOMGba/wi7C5t?= =?us-ascii?q?LjrT/V1CAsUDZd8COsrChxxUgFXzWL5P7srbBkOYC4BresAp7mv40io6/ocnX+?= =?us-ascii?q?b79jC2OY7Q4E1XM/NEliVsm8rIpPIJzvrKFCgX/X6ZZgBuzSOD0JmMBez//eeN?= =?us-ascii?q?yNHIT1MJBDM2U4NGKTWe/gyoW/S6m4/0UgOO7c/zmogxeFiXRnyrk6QPqrxMHv?= =?us-ascii?q?JYiiXnwjheEZj4h+qPvNqw9GRXtlNGEIFp7R3GAalfJYt0ORD5lsmtW0h9CTDy?= =?us-ascii?q?eNnOeRoypOWWxukN4+JkN0v9f4MbIQwLy6j86XVLSgtiUrn2vkyWXegJfttpVO?= =?us-ascii?q?vErmxJ6YJnM6IPIEKdq4LurjhSrlA5HhQkZ6IxrjxVd0nOgBdaW73ut74alwsQ?= =?us-ascii?q?S9h5tlFQGWioImIx+yLHVbhJjKmWEPEV/S+cTrYQXEV0MiNzWBe12JRye7S3nf?= =?us-ascii?q?BIqH5GnjhnrPgszTNmWAO2uTfwqKIVxTIg5La4uS0OuXNbSOWejyDICVJEwPQR?= =?us-ascii?q?k6gcD3fi6VqhYHgMd4by5KdoJd7g9IY7+Xg/ZwssfzEeV+S6Fy7wl7+IApCIsN?= =?us-ascii?q?9Egh6NudnBbbi3LScILbQx0xPjR3960gjFhxZl624LTzqv7dM+I4W9I8klzDKy?= =?us-ascii?q?GWfHbFYM/r9JsMzpuF4EUOQ2ckhhzHx+3MaIQCMNRcrPG3s6jwU/ZmVEdYhM6R?= =?us-ascii?q?kEGKUyhTaIpKZG9BkOYDjICoSl5pXQncDQ1Hk/StdqxmTWqreZiZMq1H1lhs57?= =?us-ascii?q?7y+PuHQUbOzYUM5sD2Pt1ode1+zxffGtvf0GSId8zrSuTuMCONG5+WSqwJVqRl?= =?us-ascii?q?OlxrMGElq4Lu8M3LHbXjyhSW2FROuLcm+Mny0jPk71/xmoIUU9aN1WoE8lLuvC?= =?us-ascii?q?mplcmhXjUbxqSCWQq1vbwXctMOwAcQI5ppundxYMTOEPe+iWPfIuz+EmCFsQc3?= =?us-ascii?q?/JGjN7C+CysV6qkol0JXFg4UHhbOT29QDmNtqSFQUeHY7csJFx5eSwRnidNn94?= =?us-ascii?q?0B1yIE50+v/dF1Qxtu5ca5GRndzRh9Rnz+EIbPJtMSwhut4JhI1v846U0N2FcR?= =?us-ascii?q?vJ1Jb9OcnVouSEA/3Y10kqdXxaUrsEbgPy/Ig6IsQ5VKPVHbtFpxscAbI1QJo9?= =?us-ascii?q?OGfw7q54NgVzfRDNZL6smMnluvqLZodIp3/R9l8wMCbcuxgYx/yoTAx0c5OqiG?= =?us-ascii?q?v2IJwqQDJOscFtAAN8HIRTA8MAsxanA5mMlaG+it+x+EB6u+gRvKryEP/K19O5?= =?us-ascii?q?34NvUJhc/0CLOijeBLVziER/kuuymuvA0oX2Cc76YtwLSu57QnLeZ7/dGoW/LS?= =?us-ascii?q?6OOt7ie0FY7rGQyrV5Ug+eZCrhRaqJqDWkNOl44UU80oF4cvTczDgs77HDxtT/?= =?us-ascii?q?fGBapiamrX6MKpRf9ljKCvLEUxJTU/qF/35vHbcLYovs6OcOLdsizcCS4glr9j?= =?us-ascii?q?RC0deKLLa6o0/J20J7aYjbI1Xz1yY+Q4kKLwy1MVEwjm/BtnTdHXNcI9CjKclp?= =?us-ascii?q?ntmYFQTt501rlmE2em5BG3bnRcuLOWcFxc2yfguK+xxXD9wbhe64ZVY4trGuSe?= =?us-ascii?q?lvIphFneSqtLMakddmMi3PQMlaPzrMLL9tJTdRD//ApF4vYhIetLg1QIg1b4CU?= =?us-ascii?q?IEwbKEeA1T/yzQza3E3vadOs0KeJICAL8nRIyL7L3iRMpwmntvaDnMLjSKrWYY?= =?us-ascii?q?r1XPHMKiolUC+VRTApHka09leoof0EvOCXIW0HuFAbfjqSCBIPpqBotdXQCm7T?= =?us-ascii?q?mfZ/fJARhfGaQibwRzdimKo0GClLqViGQ+AfGgnOc3/hnG1ctRSnJvBW4X3lb7?= =?us-ascii?q?yYxqxSW+ENHItMc/uZTMXcefBfITcoizoYNPy7f93GoLYzykjIQncBE6nU6F2e?= =?us-ascii?q?S1abQv6GyDLoWoUapJM5ujcu+tLMni93FLnIP7mfpz6y6IK4ijiXufHGXGk3f0?= =?us-ascii?q?M1mP4CAHWGwBRYJ2ELEcoauFvsQqGeY0ZBz2wpieZ01B8XeQRzT2di0ntIk/ah?= =?us-ascii?q?AsdZU0IbjHuyQP0aa1B6FDEw/UqN4g3oe9wAuNvTSnRY9rQWTIoSMvgo5JPQOK?= =?us-ascii?q?sKz/YjxChmrzAisyWBE1NdiRqI87HeHKJ52rJP5Go18upoXk6RWTPfc2nGyo2g?= =?us-ascii?q?C85Vwydhv2zk3dLOvu9xLLtau515AFASDCJ0IdDd+zRBXHrx2ASsohm7EjOeIC?= =?us-ascii?q?gF7zkVPyAFcPh6z/Mo+CrPI83M7UKWqrIJtFqgCQHNDKG9npNMFJLHzwK9PAZC?= =?us-ascii?q?ayTjK5F7sPBAhZ5Gbqo9dM6iAl3bKAXvJg2dq2YH8x288efjNtZD3mhLyvZkE9?= =?us-ascii?q?ruRYRfSICB0Q=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2H9BADf/EdY/wHyM5BeHAEBBAEBCgEBFwEBBAEBCgEBgw4?= =?us-ascii?q?BAQEBAR+BYLtUJ4d7UwEBAQEBAQEBAgECXyiCMxqCHAYBAiQTFCAOAwkBARcpC?= =?us-ascii?q?AgDAS0VEQ4LBRgEiDMBAxcEnHaNaT0qAoZHAYR7hj6HI4FSEQFohRUFmmaBeI8?= =?us-ascii?q?iiieGFAKSEVZhF0SFMnKHGIIuAQEB?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 07 Dec 2016 12:17:02 +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 uB7CGT77031148; Wed, 7 Dec 2016 07:16:34 -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 uB7CGS0l294296 for ; Wed, 7 Dec 2016 07:16:28 -0500 Received: from goalie.tycho.ncsc.mil (goalie [144.51.242.250]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id uB7CGQM5031145 for ; Wed, 7 Dec 2016 07:16:27 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1CZAADf/EdYhxUR49ReHQEFAQsBgzkBAQEBAYF/t0eEFoYiAoF1UwECAQEBAQECEwEBAQgNCQkdhRkDAydiUVcZiFQBAxucdo1pPYZzAYRKAQslhj6HI4JMggALgwoFmmaBeI8ikDsCkhGBToQOgWhyiUYBAQE X-IPAS-Result: A1CZAADf/EdYhxUR49ReHQEFAQsBgzkBAQEBAYF/t0eEFoYiAoF1UwECAQEBAQECEwEBAQgNCQkdhRkDAydiUVcZiFQBAxucdo1pPYZzAYRKAQslhj6HI4JMggALgwoFmmaBeI8ikDsCkhGBToQOgWhyiUYBAQE X-IronPort-AV: E=Sophos;i="5.33,310,1477972800"; d="scan'208";a="5865268" Received: from emsm-gh1-uea10.corp.nsa.gov (HELO emsm-gh1-uea10.nsa.gov) ([10.208.41.36]) by goalie.tycho.ncsc.mil with ESMTP; 07 Dec 2016 07:16:20 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3ASLL/vhOvieSmVMQzaKEl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0Lfz/rarrMEGX3/hxlliBBdydsKMfzbeM+Pm8EUU7or+5+EgYd5JNUxJXwe?= =?us-ascii?q?43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRp?= =?us-ascii?q?OOv1BpTSj8Oq3Oyu5pHfeQtFiT6zbL9oLBi6swrdutQZjIB/Nqs/1xzFr2dSde?= =?us-ascii?q?9L321oP1WTnxj95se04pFu9jlbtuwi+cBdT6j0Zrw0QrNEAjsoNWA1/9DrugLY?= =?us-ascii?q?TQST/HscU34ZnQRODgPY8Rz1RJbxsi/9tupgxCmXOND9QL4oVTi+6apgVRnlgz?= =?us-ascii?q?oFOTEk6mHaksx+grxGrhyvpBJxxIzbYI+OOfZiYq/QZ88WSHBdUspNUSFKH4Oy?= =?us-ascii?q?b5EID+oEJetWrpPyp0EOrBCjGwesBf3gyiVOhnDo3awxzuMsEQ7c0ww6H9MCqm?= =?us-ascii?q?jUrNTrO6cIV+C60qnJwC7Mb/NT1jbx8pTHchckofyVW797bMnfyVE3Gg/bk1mc?= =?us-ascii?q?t5bpMy2L2ukPqWSX8uhtWfixh2I6sw19vzuiy8c2hoTHiY8Z0FTJ+T9nzIorKt?= =?us-ascii?q?C1TlNwb8S+H5tKrS6aMpN7QsM8TGFsvyY30rgGuZmmfCgW0pgnyBvfavOdf4iO?= =?us-ascii?q?/B3jSP6dITZ+hH17ZLKynwi+/VW+xuHmSMW4zlRHojBYntTOrHwByQHf5tCCSv?= =?us-ascii?q?Rn/0eh3TiP1xrU6uFBOU00mrDUK4Qhw7IqipoTsFrMHjXwmErojK6bbUok+u2n?= =?us-ascii?q?6uj9frrmoZqcO5duig7iKqQuhtC/AeMgPwgVQWeb/eW81Lv+/Uz2W7hKkv03nb?= =?us-ascii?q?XZsJDdP8gboLW5DBVP3oYs7Ba/EWTu7NNNhnQDLVRYaDqbnoPpPBfIO/m+AvCh?= =?us-ascii?q?0Hq2lzI+6PncL/XdA5jXKHXS2OPudKxsrVJdxRA1wMF36JdETLoGJaSgCQfKqN?= =?us-ascii?q?XEA0phYESPyOH9BYAl2w=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0GOAADf/EdYhxUR49ReHQEFAQsBGAEFA?= =?us-ascii?q?QsBgw4BAQEBAYF/t0eEFoYiAoF1UwEBAQEBAQEBAgECEAEBAQgNCQkdMIIzGII?= =?us-ascii?q?eAwMnYlFXGYhUAQMbnHaNaT2GcwGESgELJYY+hyOCTIIAC4MKBZpmgXiPIpA7A?= =?us-ascii?q?pIRgU6EDoFocolGAQEB?= X-IPAS-Result: =?us-ascii?q?A0GOAADf/EdYhxUR49ReHQEFAQsBGAEFAQsBgw4BAQEBAYF?= =?us-ascii?q?/t0eEFoYiAoF1UwEBAQEBAQEBAgECEAEBAQgNCQkdMIIzGIIeAwMnYlFXGYhUA?= =?us-ascii?q?QMbnHaNaT2GcwGESgELJYY+hyOCTIIAC4MKBZpmgXiPIpA7ApIRgU6EDoFocol?= =?us-ascii?q?GAQEB?= X-IronPort-AV: E=Sophos;i="5.33,310,1477958400"; d="scan'208";a="1677543" Received: from mout.gmx.net ([212.227.17.21]) by emsm-gh1-uea10.nsa.gov with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Dec 2016 12:16:20 +0000 Received: from workstation.localdomain ([185.34.9.224]) by mail.gmx.com (mrgmx101 [212.227.17.174]) with ESMTPSA (Nemesis) id 0MWgND-1cBRhh38IN-00XwJ5 for ; Wed, 07 Dec 2016 13:16:18 +0100 From: Gary Tierney To: selinux@tycho.nsa.gov Subject: [PATCH] libsepol/cil: remove avrules with no affected types Date: Wed, 7 Dec 2016 12:15:59 +0000 Message-Id: <1481112959-26208-2-git-send-email-gary.tierney@gmx.com> X-Mailer: git-send-email 2.4.11 In-Reply-To: <1481112959-26208-1-git-send-email-gary.tierney@gmx.com> References: <1481112959-26208-1-git-send-email-gary.tierney@gmx.com> X-Provags-ID: V03:K0:7Srz3YVm1ROyzG9bQXlIBGNEop8mHcswDmwwC6/qlv1I3yLRew6 1VuoJhK5N2SxWrhwokeQlSJHkvo/U8CU43PNCg/atEGk5oxiDQyw+9nvRyFDUoHSXPgLJgm n882nMxDvqPFSd7fgNXKBjGWlahHAuCPR4m2bfPCB1rAgMXlE5aGhQldMDMKQD5x5gEdaV4 gpsFdgf/HPlRppxs0rUhg== X-UI-Out-Filterresults: notjunk:1; V01:K0:eiHdxKw09H4=:qUH2d3N7hfQmKObggADje+ bfBh2jonFF8lIZbRGzM+xPIs5UjKNa5JYZ/f1zIIL81nAEpOzioNBlxt3uGArw/HhSy79UMlx YOJPAtNIgvT7rcN6SW7g3QvBEpu2qWG/aTj5F8r778LKAOGtklIAS7xey/BYWyR5Sksg7TNeX K8Ft2n5WF/P+mFcXqoa6QZA6BdALKljHHLu588XkxpAVd3NairGPRYrjAJniSOtALhLK25Pmt wQsUqwFDib9VVOK2B5vjR7Iqq19swRzZDvWawZ7RXxgeyk6kPtSMptL1YvQJfcH6TAiDmCmSB hsrubqs3Wsq322zUIxyrBIJIqylF+lp16h8DY2WE/cD37zfaRatN8iphs3s2PGkYEkJ0WM36u 1aPmoxNrGsm6WaoWmMLH2Nea6YFRORJAC/7U32GJm5f+FXxicS4/1/HMSz+5+mzEejYOe97qj GY3A5Ow7JTuUyhB77k3fV82kBPihIGKbCypNL/2Bh5oZVZTfNk2LflYbOTfR4TqWc9wvD/ABh hk5iFlCHVDUcfeLB83KCLHDMRo5Es21BcEmvlturDFEn3jfsd2wPXUlrX2vOr2CIIz1kzTy/r Ft8AsN9dHbroR8b1QpIZy2oOTPTHLxkhjJ/n+zCP9ZaIq2DPHwE+hP8PAHMEjt4HcYCZSqNK1 Ahv2/KfyiOxHV1p6ggWfCLgbK5GOeJUr2GlXqzZlsRhD/McmMuqYFsRuTui//j8MDGnP1HoIM 8LoP1y8Vz4GXTbixeXVJwVOaJZLaSNcy7HHjEJPIs8q3wderiusAOieMeBw= 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: MIME-Version: 1.0 Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP Adds a check for avrules with type attributes that have a bitmap cardinality of 0 (i.e., no types in their set) before adding them to the libsepol policy in __cil_avrule_to_avtab(). Also adds an exception for neverallow rules to prevent breaking anything from AOSP mentioned in f9927d9370f90bd9d975ff933fe107ec4f93a9ac. Signed-off-by: Gary Tierney --- libsepol/cil/src/cil_binary.c | 47 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c index d33981b..3aa350a 100644 --- a/libsepol/cil/src/cil_binary.c +++ b/libsepol/cil/src/cil_binary.c @@ -1411,6 +1411,48 @@ exit: return rc; } +static int __cil_type_datum_is_unused_attrib(struct cil_symtab_datum *src) +{ + struct cil_tree_node *node = NULL; + struct cil_typeattribute *attrib = NULL; + + if (src->fqn == CIL_KEY_SELF) { + return CIL_FALSE; + } + + node = src->nodes->head->data; + + if (node->flavor != CIL_TYPEATTRIBUTE) { + return CIL_FALSE; + } + + attrib = (struct cil_typeattribute *) src; + return ebitmap_cardinality(attrib->types) == 0; +} + +static int __cil_avrule_can_remove(struct cil_avrule *cil_avrule) +{ + struct cil_symtab_datum *src = cil_avrule->src; + struct cil_symtab_datum *tgt = cil_avrule->tgt; + + // Don't remove neverallow rules so they are written to + // the resulting policy and can be checked by tools in + // AOSP. + if (cil_avrule->rule_kind == CIL_AVRULE_NEVERALLOW) { + return CIL_FALSE; + } + + if (__cil_type_datum_is_unused_attrib(src)) { + return CIL_TRUE; + } + + if (__cil_type_datum_is_unused_attrib(tgt)) { + return CIL_TRUE; + } + + return CIL_FALSE; +} + int __cil_avrule_to_avtab(policydb_t *pdb, const struct cil_db *db, struct cil_avrule *cil_avrule, cond_node_t *cond_node, enum cil_flavor cond_flavor) { int rc = SEPOL_ERR; @@ -1425,6 +1467,11 @@ int __cil_avrule_to_avtab(policydb_t *pdb, const struct cil_db *db, struct cil_a goto exit; } + if (__cil_avrule_can_remove(cil_avrule)) { + rc = SEPOL_OK; + goto exit; + } + src = cil_avrule->src; tgt = cil_avrule->tgt;