From patchwork Tue May 30 19:13:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Carter X-Patchwork-Id: 9755199 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 4F3FD601D2 for ; Tue, 30 May 2017 20:15:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4403B262AE for ; Tue, 30 May 2017 20:15:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3864F2766D; Tue, 30 May 2017 20:15:52 +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 581D6262AE for ; Tue, 30 May 2017 20:15:50 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.38,419,1491264000"; d="scan'208";a="7571456" IronPort-PHdr: =?us-ascii?q?9a23=3An3T52BEyqBYzgtBxaPsKxZ1GYnF86YWxBRYc798d?= =?us-ascii?q?s5kLTJ79psy6bnLW6fgltlLVR4KTs6sC0LuJ9fy8EjVcvN6oizMrSNR0TRgLiM?= =?us-ascii?q?EbzUQLIfWuLgnFFsPsdDEwB89YVVVorDmROElRH9viNRWJ+iXhpTEdFQ/iOgVr?= =?us-ascii?q?O+/7BpDdj9it1+C15pbffxhEiCCzbL52Lhi6twrcu8YZjYd/Jas8ygbCr2dVde?= =?us-ascii?q?hR2W5mP0+YkQzm5se38p5j8iBQtOwk+sVdT6j0fLk2QKJBAjg+PG87+MPktR/Y?= =?us-ascii?q?TQuS/XQcSXkZkgBJAwfe8h73WIr6vzbguep83CmaOtD2TawxVD+/4apnVAPkhS?= =?us-ascii?q?EaPDE36mHXjtF7grxdrhyvuhdzx5fYbJ+JOPZ7eK7WYNEUSndbXstJVyJPHJ6y?= =?us-ascii?q?YYUMAeQGJeZVrZTxqlUQohulHgSgGP/jxyVUinLswaE2z+IsGhzG0gw6GNIOtW?= =?us-ascii?q?zZotHvO6cXT++117TDwCvZYPNMxTfy9pLIeQ0mrPGOU7N/bdDeyVMzFw/blViQ?= =?us-ascii?q?tYzkMC+V1uQKqWSb6fFgWvi1h24orAFxvCGiy8ExgYfKnoIY0k3I+Cp2zYovJd?= =?us-ascii?q?C0VVR3bcCrHZdOrS2WKo17Sd44TW5yoiY10LgGtIa+fCgN1Zso2QbSa+eCc4iU?= =?us-ascii?q?+hLjU/uRIStgiHJlZr2/gxGy/FC8yuLmTMm00UtKrjFfntnQtnECyxzT6s+dRv?= =?us-ascii?q?t74kihwiqA2xrW6uFFJUA4javbK5g/zb4sjpcfrEvOEyDslEj2kaOabFso9+e2?= =?us-ascii?q?5+j9f7nqvpqcOJV1igH6PKQugMu/AeEgPwgVQWeb/eW81Lv+/Uz2WblFlfo2kr?= =?us-ascii?q?TfsJ/GO8sbvbW0AxNV04k/6xa/CC2q0NIDnXYdNl5FdxWHj5bxN1HUPP/4Feu/?= =?us-ascii?q?g0irkDpzxfDGObvhDY/RLnjDirjhe61w60xbyAo1yNBQ/YlUCq0fL/LpQU/9rt?= =?us-ascii?q?vYDgU2Mwas2eboFM191p8CWWKIGqKZMqHSvkWU6eIsOOmMY4kVuDfjK/U+6f7u?= =?us-ascii?q?iWI5mFAGcqm025sXdG24Eu5hI0WDbnrmms0BHnsSvgoiUOzqj0WPUDBSZ3a2Wq?= =?us-ascii?q?Iz+Cs7BZmoDYjdW4+th6aB0z2jHp1MYWBGCE6DHmv0d4meXPcMci2SKNd7kjMY?= =?us-ascii?q?TbihV5Mh1Ra2uQDn17VnK+3U+isEtZ7+z9V1+fPclQsz9T11CMSd1XuBT2dqkW?= =?us-ascii?q?MUXzU2xrxwoVRhylef1qh1m+FXFcBJ6PNTSQo1KZncz+lmBN/oQQLBYs2FSFC4?= =?us-ascii?q?TdW6GTsxVM4+w8cSY0ZhHNWvlhDC3iutA78TjLGLAZg0/rvd33j3Pcp9zWzJ1L?= =?us-ascii?q?Mij1knXMtAK3eqhqhh+AjPH4TJiVmWl762daQA2y7A7HyMwnGJsEFcUQ5wSrnF?= =?us-ascii?q?XWsFakvNs9v2+lnOT6SwBrQjMwtBz9OCK6RRZ9L1jVRGXurjOM/Eb2O/gWiwGQ?= =?us-ascii?q?2IxrSKbIbwfGUdxirdAlAekw8P5XaGKRQ+BiC5rm3AFDxhD0jvY0L38eRlsHO0?= =?us-ascii?q?VFU0zwCRb01507q64AIaiuKGR/MUxLIEtz8rqy9oE1alw9LWF92AqhJvfKVGe9?= =?us-ascii?q?w95ktI1WPCtwFmO5ygN6FiikcFcwV5pEPizRJ3Cp9PkcIytnMl0BJyKb6E0FNG?= =?us-ascii?q?bz6Y3or/Or7QKmnv5x2vaLTZ2lLZ0NaL4KsP7+44q1r7tgGzCkUi62ln08VS03?= =?us-ascii?q?aE/JrFERASUZPvXUYt7BV1va3VYiwn64PTz31sPrG+siXe1NIxGOsl1hGgcs9E?= =?us-ascii?q?MKOKDg/yFNYaB9S1JewxnVipaRwFPOVI+64yJc+mceWJ2LKzNuZ6gD2mlXhH4J?= =?us-ascii?q?x60k+U+StzUOrI34obzPGCxQuKTCn8g0m7ss/shIBEYCseHm2lySjrHIRRfLF9?= =?us-ascii?q?fZ4XCWeyJM263sl+iIPwVH5Z7lGjA0gL19OueRqXc1PyxxZQ1VgNrXyhhyS40y?= =?us-ascii?q?R+kys1oaqHwCzO3+PieQIBOm5KQGliiUnjIZOvgt8AQkeodQ8pmAGi5UbgyKhR?= =?us-ascii?q?vL5/IHXLQUdUYyj2KHlvUrWxtrWef85P74kovT9LX+S8ZlCaTLH9rgAe0yPiGW?= =?us-ascii?q?tR3io7dzawtpX+hRx6h3qXLGxvo3rBZcFw2RDf6cTYRf5QxToGWDB0iSLJCVi4?= =?us-ascii?q?Ptmp+8iUlpjYv+ClT2KhV5tTcSj3woObrie743NlAQGnlfCphtLnCRQ60TP819?= =?us-ascii?q?RyTyXIqxL8Yo312KSgLe1neUdpCUTn68pnBo5+iZE8hJYK2XgVnp+V52YIkX/v?= =?us-ascii?q?MdVH3qLzdGINSiQWw97R+gTqwldvIWmOx4L9SnWdxc1hasK/Ym8K3CI96NxFBL?= =?us-ascii?q?2S7LNagSt/ukC4oh7JYfhhgjcdzuMj6H0EjOEPowog1SadDa4UHUlDOyzjiQiI?= =?us-ascii?q?48q5rKVNa2alaaKw21ZmndC9ELGCpRlRWGj/epg/BiJw8MN/P0/M0HHp7IHrZs?= =?us-ascii?q?XQZ8oJthKIixfAk/RVKJUpm/oSnyVnJGb9sGY5xO46kRxv3Yi2vIadJGVr5q65?= =?us-ascii?q?BQRYNjLtbcMJ5j7tlbpentqR3423BpVuACgLXJ/2QvKwCj0Ss+jnOBiUEDAnt3?= =?us-ascii?q?ebAqTQHRWE6Et8tHLPFI2rN2uLK3YHw9ViQwOdJENBjwwOWjU1gII5HBiwxMP9?= =?us-ascii?q?aEd5+iwR5lngpxtC0O1oMQX/UmDapAqzZDc7VoWQLB1M7g5Y/0fVK8ue7uBtEC?= =?us-ascii?q?5E4p2ttguNKnaUZw5QF2EGRlSEB0z/Prmp/dTA9vKXBu66L/TQfbWOtfZRWO2T?= =?us-ascii?q?yJKpzIRm4y2MOdmVMXl6EfI3wExDUm5lG87BgTUAVzQXlz7Rb86cvBq84Dd7r8?= =?us-ascii?q?6l/PTuQg3v4YyPCrtJPNp15x+2hL2PN+mKhCZ2MTxYzI8DxWfUyLgD214fky9u?= =?us-ascii?q?dyOzHrsdri7CVqTQmrNQDx4AcC58LtdH76cm0glKI87bhcv/1qRkgf4tF1dFSV?= =?us-ascii?q?vhl9mvZcwQOW69LEvHCV2FNLSHPz3L2N33Ya29Sb1WlupUsQG/uTeBHE/nJDiD?= =?us-ascii?q?kCPpVx+3O+FWkC6bJABeuJ26cht1EWjsUsnpZQO9MN92kT02xqY5hnLUOmECLz?= =?us-ascii?q?dwaURNrqef7SlAmPVwB3RB7mZ5LemDgyuW8vLYJYgMvvtkGCR7jfxa7W8hy7RP?= =?us-ascii?q?7yFEWeZ1lzHIot5qvlGmlPOAyiB+XBpSrTZLh4KKvUJ4NaXf6JZARW7O/AgR4m?= =?us-ascii?q?WIFxQKu9xlB8X0u69K1NjAjq3zJylZ89/P5ssTHdbUJ9iIMHU/KhrlAjjUAxUZ?= =?us-ascii?q?TTSzL2HQm1RdkO2O9n2StpU1sZnsmJUJSr9dT1E6C+0VBV9kHNMYJpd7RDQkka?= =?us-ascii?q?SUjMQQ/3qxsAHRRNlGvpDATv+dG/rvJyyHjbZafBYIxqv4IpoVNo3+wUNia116?= =?us-ascii?q?k5/NG0vfR9xNpTdhbgAsqkVX7Hd+VnEz217iag61/H8TEvu0kgQsigt5YOUi6j?= =?us-ascii?q?Hs7EwtJlrNuiQwk1I8lsnigTCUbDH+NrywXZ1MByryqUcxLovxQxxpYg2qgUxk?= =?us-ascii?q?KDDESqpSj7pgcWBklhTRuZ5IGf5SQ61LfgMQxe2XZ/Uv1FRTtD+rxUlZ6uvZEZ?= =?us-ascii?q?FijhclcYawr3Jc3AJudNg1KrLKK6pN1VVQhaWOvjS01u8rxg8ePEUN8GKIdC4O?= =?us-ascii?q?pkMIKqEsJzC08ex09QyChzxDdXAWV/U0ufJl6FkyO/6cwCLgyLNMMUGxN/aCIK?= =?us-ascii?q?OetWjAjdSITU0w108SkUlK46R22985c0WIT0Av0KeRFxMROMXfLgFVacxS+2XN?= =?us-ascii?q?ciaKsOXA2oh6MJunFuDvV+OOs7wUgk28FgYzA4sM9tgBHoWr0EzAMMjoNqAFyR?= =?us-ascii?q?Qw6wTwP1iKFu5JeAiMkDYJuMGw0oN43ZRHJjEcHWV8MT+75rDJqQ82mPCDRss5?= =?us-ascii?q?Ym8GXosYMXI7QMm6mylDv3teCjm20+UZxRON7z/6uyTcFj78b8BsZP2MfxNjFM?= =?us-ascii?q?m2+Skj86ixkVPX6YvRJ2X7NdRkp9/O5vgXqIqAC/NRUbZyqVzcm5VCS3ysTWHP?= =?us-ascii?q?Dca/J4LsZIk0cdz0FnG6X0S8izIvT8b+JtCtLrSIgQzzSoZUt5Gb0yw5Oc+7CD?= =?us-ascii?q?4eBw96p/sf66JkeQ0Df507bAb0twQ/Mqy/JxuY0tWuQmu2NDRWTvlewv+haLBN?= =?us-ascii?q?ySojcPO6wmM6Tp4m1+m37VINRJYSgx7EwfajZpVRXjbrFXxYewTPoy05l257Oe?= =?us-ascii?q?sp2eg/wQnHsV8FPzCFaexlcmpEsM8gBVmKO3V5FnI4R0OAjYrE+gOjxK4d/y1G?= =?us-ascii?q?ktlOzOJFrmbxvoXEYD22QqyqqY/Zsy06bdgpu6dxK5DsItOatJPCmTzSVJbQsh?= =?us-ascii?q?CEUC6+E/pVhN1QLTlFT/ZWgm4lONYJuYxb5Uo2TMc+KKRFCLMwqbCydTpkESkS?= =?us-ascii?q?wDcDV4OG3TwNnue827zelheLaJosKQEKvo9ej9UaSCN5fiQepKq/WIrMjG+EVn?= =?us-ascii?q?IHIAEN4gRQ/AgAjJN/fvj54IrUS59B0yRWrO9pXSbQGZlo8lT6RnuQgVfmVPWr?= =?us-ascii?q?i/ap0h5KzPLwztkbXwZyCVJHyOZMkUsnM6p6K7UKvoHQrD+Ha0f6vGPryOupIF?= =?us-ascii?q?lRyMLUd13kDIrLr2X8SCgc9WcSRYBR1HHVDY4SnBZhaKY3uFVMJ5ire0jk6zM4?= =?us-ascii?q?x4RpHry4VcGxyFYmtnsGRjmlHMRfBO18t1LXQjJlaYixqJr5I5VSXnNQ+JqFpl?= =?us-ascii?q?hDikVtLii5xYBfK8xW4z4MXTlPoSmGs9eoTs1Mx9N2BYcWIthjo3f9BL9EOJ+J?= =?us-ascii?q?rn03vLzv1mHW+zQiv1e/2jqzB7W4TuJC8m0ZAgUmOWKeqkw1AOst9mfd6VfNs1?= =?us-ascii?q?9u8+dcHLiPgl17oCxhEZBWGjZJyXelIkx8THlcqepaLrjVftddQ/k1ax6vPQA+?= =?us-ascii?q?Ff440EyI+0F0gWn2YzZougtc5S/dQxE+VTMJjbf1hT0etsanNCcGS5JPaDUsdD?= =?us-ascii?q?vFJx6emS9MphpfbV9lW4wBCNZf574bxZdU/tbFSUu0KSEKRgZiORg80fVCjkNM?= =?us-ascii?q?rVuXeTjFDQW2cfbArAd3cd2WrM6zI/Tz5B1HhZ//sOAk66UDQGWrmQ+qQd/AtI?= =?us-ascii?q?Lzq8OFtlCQe6fiL+2zf2LOQCLKjR+umbcuF4PK8DTLMApHN5l6zmIpboPvCWHX?= =?us-ascii?q?IRhLJb8XKkRAWK9mbtVGp/xVaNV/eKYV46NtAAyIRg/3Eoy1sPZGNkrTRSjZLy?= =?us-ascii?q?iZ6Oywv5/c7bzHRuj8fcGMw3HHQ7xpMZtk9Tb7HKrl3pFE9krwxPht6ltwSULa?= =?us-ascii?q?PCCZsNThOgQL6dG6dkv5op0mBy7ZAItrnXr2wUFAatAXTDG0/5Qe1JNZ8mz/Se?= =?us-ascii?q?Zi3kj0qu1S+KFu6ZMr7LBx1ce0OaDSJOxGsU99HBebGBhl+44wAGh7W2BRePUe?= =?us-ascii?q?KOnQfaQeicDhtfz3G7YQ6B2P9OxTccHHKF3ZmsmjFjGcTgRJnAUbpj4AKQuczP?= =?us-ascii?q?qFlLVqScu+oOj5x0Yt40S/LhEazbBi/4GE+rGSqO/QdRvRwqAOWrL2ScPrsrQs?= =?us-ascii?q?p0SS6OUmlLEUfGx1bRenEO8AWcED3Wrg0bolzSQ3E8PEBb7g/uBMV24hlDL6h5?= =?us-ascii?q?99B0kWGu8THbeT+4Remnw1m+3fNt0TaKxCm2CPFRC+ErAY0n6r9zGXIHR5jRHS?= =?us-ascii?q?zhHwW3284EXxrS9iTivG183jnVZNVrmrGUdSWDKkOUl5sDyTOwrosMD4ub8v4E?= =?us-ascii?q?E3NWzks8mNlHC6NbNSEMD+K8aQIS4upFIYlJcxXMCg2ZgHGdqhJ9cc6G1xYeHa?= =?us-ascii?q?62y1iC9Bv6dGh43F78GO5vrXHGevj6uGq7WM3j9U0H44sk8j6tq4LPHB+8WKQ+?= =?us-ascii?q?i012YWVyp/vxDBXxu1p7HAoVAbJ1GE0EDRmIMQJtFZx3441kP46+c/XNI/7gJe?= =?us-ascii?q?FpzPZ/kavzD8JCP0wUqDY9IwTiSe0TpXHlfuHFl9Bqc92Hz/vNjIlXfW9F0kXI?= =?us-ascii?q?9weFL7hRZvFYU3NVot6EQLwioECQUNaBGaA6uyCkv5NoYETlYMaQiZ07emYKs3?= =?us-ascii?q?2ldzwry37u/JceN8H7YNNupajgOWh1dbG4kWsKMET7J+el9d6LbXqRL/C4jjRP?= =?us-ascii?q?XpiX0wOuCrTc9A7MAZrXwi4hylSBa67pdD9bkbgoiSdqFYeZjMoNx870B/6D4X?= =?us-ascii?q?bCNNnARwjxO3UOAbvuDj4cHXsIG25eaqVaYtQfgX9hcvCmRmlZTwnEwsodHZ1u?= =?us-ascii?q?dbUI3Vip7z8ANTLH6QvobVzR18JfAJK4Kxc7Zq728HKDQGJ3ISIdqWbOEx4zN3?= =?us-ascii?q?MDrN41xNGMUMas0DMcXQmABUhUzpWK1J+crAAFCYEZpze9ou72Xp1DA/6YE8Xf?= =?us-ascii?q?r46D+qOZDf6ElAP/xZgyV2it3CuOgVzOHWCCgW/XmWdRh1zTmfy5mWEfrw+/uD?= =?us-ascii?q?yM3MXVMcAiE2S5tdJCaF+QG/Seq6ipPpUh+T6s/0h54+b1yfRniwnKQDr6ZNHv?= =?us-ascii?q?VNiiHl0ThEFoH6neiZs9yy52tLrldHCpp87QXZGKVDOZV2IQj3lsuxSUdgHSbw?= =?us-ascii?q?ZMbUdh4quOqX2OgM+fl+OFXiao8bOB4EzKj66XVNRAt0VLH2pkqZXf4WZNZ+Tf?= =?us-ascii?q?PEqXZV6Z5vK6ARJ1WdoZ3qoS1OqF8oHA8oZrgwriZZdknVhgFVXbj7uKIYgAsG?= =?us-ascii?q?TdF5oVNMGX63OG8m6DrISb9VjLKIBPII/TudSK0OU0N1MiJxWB6115BudKGvnf?= =?us-ascii?q?9ZqG9GmTl9oPcy2Tx8WBS8oTHsp74K2T84+rG4szUBuXpfQuqCkyfIDUhDw+kL?= =?us-ascii?q?jKcdDXbi8l+8YHgYYYvs4blnO97v9Y087HQ+exkjeTMJXfi4ASHqk6yIGpCPsM?= =?us-ascii?q?5bhBOVucXOc6W8LS4JO7Q51BLsWnl90g/FnBpy92sLWDqg5sc+JIqhIcYl2jao?= =?us-ascii?q?GW/DeVYO/KxJvsXxtVoQQeo4c1xhxnts0tSdSi0LWsPPB34/jhI4ZmVcbJJD9R?= =?us-ascii?q?gaGrEngjaMualH8B8bYDPQEom+4YnQmsHI2XghQttwwGLZuLGFjIsw0HJ5g9N0?= =?us-ascii?q?8jKOuHMKeuzaU89tAmDz1oBbyez/e/WirPsKSI5nyLS9Sv8NLNOv+Wys2JVlQk?= =?us-ascii?q?Wl3KgRH0KlMO8fwbfWSzulSWydWemQb2iMnio2Mk3s6hmsNFE3btlFr1MlOOvY?= =?us-ascii?q?mpFcjxHhUa9zRiiIoF/bzW8jMeAddw8tuoeoYQ8KTOkXZ+eCI+gi2vs+B0UQb3?= =?us-ascii?q?XRByt5F/e2sUKxnIh8I3hv+lv1YeLx8g39K9uSHh4EEZLGrp5v5/O1W3iNOXh6?= =?us-ascii?q?zB19JEN07fvQF0wttu9AdJachcDQh9N/0eEfbfdsPyo9utodmo947ImU18CKcQ?= =?us-ascii?q?rPwZnuP9HVpeOYA+bez0QsdWFWSL0ZYRn6548iJN42R6XTHadFvRQbHaU6ToIu?= =?us-ascii?q?N2Pw9KFsMgx+aQ/QZLWxgsnvuO2LfJ9UqGHM4lI3NifctAUJyuaoQgxjc5Cqm3?= =?us-ascii?q?LyLYg+RzJZtd1tCwdpE5VUFsMFrgqnH4SUl7+hh9+24UN6tPcAsbDsBfDSyNS5?= =?us-ascii?q?w4JxUoBd5UyPIjncH7FrgkB/geSpnvfA04X+Cd/4edwaSud3WGjFZaHaHo+nMD?= =?us-ascii?q?KBJtr8e1Ja876byL95VhSRZCbkX6uJrSGkMPRk4V4nyoxjZ+fTzSYi77fc2Nfo?= =?us-ascii?q?YGFbvCijp2aTNJRD9FzKGfDeXxVMRPqe7mllGawXbY3p9OYBNtAsz8Sc4wlt4z?= =?us-ascii?q?RYzsSFO7Kuo1TP2k1lb5LbKlXm2yIiVokXLxSzK0wsgXXWqn7FG3RTMtCkKdVx?= =?us-ascii?q?gNaSFhHt4lN+ln0tZm5AHGroQsycOXYa28K4egKK8ANLD9Aen++4Y0I4sbeySe?= =?us-ascii?q?ZwMJVfheqqrKkHkcpuKyzXRshVJSLQLLhtMTdKE+XPokQoYh4Ds7goVYc1ZYSO?= =?us-ascii?q?LFkBMEie1SP41RHC3lHsd9ywyKaJJz4b8npdwL3eyzhMphe2ufKCj839VLDWdo?= =?us-ascii?q?r2XP/PMCY/UDGVWygyG16z+Vi4o/oEoOaYIWAHr1AWZyKSDxQTprpurdjLFWLT?= =?us-ascii?q?n/dsfJgUi/CbQSzwTzd4lKUqDCZRqU+MW+YDFRXRb3L5m2pctgmiKeNN8H/mdL?= =?us-ascii?q?CY2LRaW/YXAopNdf2ZRcHUefZAKDc0xX0lP7Onctndqasp+k7ZRmseVa/T/RuR?= =?us-ascii?q?S1DFbOabwmfJVIAYpMAfszA098iYyi1oGK3SI+y3uy+l8on+ij2R/+LZSD9+MA?= =?us-ascii?q?QOnOseDTzZk1F7I2YeBoRQ4hng?= X-IPAS-Result: =?us-ascii?q?A2F7AgBK0i1Z/wHyM5BdGwEBAQMBAQEJAQEBFgEBAQMBAQE?= =?us-ascii?q?JAQEBgwEpgV0Sjn2odiqIWVcBAQEBAQEBAQIBAmgogjMkgkkCJFUDCQIXMQgDA?= =?us-ascii?q?WwFiAVOgUUNrhU6JgKLWIhBiFSFJgWBLAGcdAKTGw2LIoZVlE5YgQonCQIfKVV?= =?us-ascii?q?xg06CX1qJUwEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea10.nsa.gov with ESMTP; 30 May 2017 20:15:43 +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 v4UKE6fm019900; Tue, 30 May 2017 16:14:31 -0400 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 v4UJCABu051557 for ; Tue, 30 May 2017 15:12:10 -0400 Received: from moss-lions.infosec.tycho.ncsc.mil (moss-lions [192.168.25.4]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id v4UJCAQl026091 for ; Tue, 30 May 2017 15:12:10 -0400 From: James Carter To: selinux@tycho.nsa.gov Subject: [PATCH 1/2] libsepol: Clean up scope handling Date: Tue, 30 May 2017 15:13:03 -0400 Message-Id: <20170530191304.29886-1-jwcart2@tycho.nsa.gov> X-Mailer: git-send-email 2.9.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: Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP Currently, when checking if an identifier is enabled, each scope in the decl_ids list is checked. This means that if any block that requires the identifier is enabled, then the identifier will be treated as being declared. Now, declarations will be kept at the end of the decl_ids list and when checking if an identifier is enabled, only the last scope will be checked (Except for roles and users which allow multiple declarations, they will have to keep the old behavior.) Signed-off-by: James Carter --- libsepol/src/avrule_block.c | 24 ++++++++++++++++++++---- libsepol/src/policydb.c | 13 +++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/libsepol/src/avrule_block.c b/libsepol/src/avrule_block.c index 224e999..e1f460e 100644 --- a/libsepol/src/avrule_block.c +++ b/libsepol/src/avrule_block.c @@ -156,20 +156,36 @@ int is_id_enabled(char *id, policydb_t * p, int symbol_table) { scope_datum_t *scope = (scope_datum_t *) hashtab_search(p->scope[symbol_table].table, id); - uint32_t i; + avrule_decl_t *decl; + uint32_t len = scope->decl_ids_len; + if (scope == NULL) { return 0; } if (scope->scope != SCOPE_DECL) { return 0; } - for (i = 0; i < scope->decl_ids_len; i++) { - avrule_decl_t *decl = - p->decl_val_to_struct[scope->decl_ids[i] - 1]; + + if (len < 1) { + return 0; + } + + if (symbol_table == SYM_ROLES || symbol_table == SYM_USERS) { + uint32_t i; + for (i = 0; i < len; i++) { + avrule_decl_t *decl = + p->decl_val_to_struct[scope->decl_ids[i] - 1]; + if (decl != NULL && decl->enabled) { + return 1; + } + } + } else { + decl = p->decl_val_to_struct[scope->decl_ids[len-1] - 1]; if (decl != NULL && decl->enabled) { return 1; } } + return 0; } diff --git a/libsepol/src/policydb.c b/libsepol/src/policydb.c index b153095..ff4fc4e 100644 --- a/libsepol/src/policydb.c +++ b/libsepol/src/policydb.c @@ -1698,6 +1698,19 @@ int symtab_insert(policydb_t * pol, uint32_t sym, return -ENOMEM; } + if (scope_datum->scope == SCOPE_DECL && scope == SCOPE_REQ) { + /* Need to keep the decl at the end of the list */ + uint32_t len, tmp; + len = scope_datum->decl_ids_len; + if (len < 2) { + /* This should be impossible here */ + return -1; + } + tmp = scope_datum->decl_ids[len-2]; + scope_datum->decl_ids[len-2] = scope_datum->decl_ids[len-1]; + scope_datum->decl_ids[len-1] = tmp; + } + return retval; }