From patchwork Tue Feb 14 13:14:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vit Mojzis X-Patchwork-Id: 9571905 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 3EFD260578 for ; Tue, 14 Feb 2017 13:15:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2D8F628409 for ; Tue, 14 Feb 2017 13:15:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 21FE62841C; Tue, 14 Feb 2017 13:15:17 +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 308D428409 for ; Tue, 14 Feb 2017 13:15:15 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.35,161,1484006400"; d="scan'208";a="3843723" IronPort-PHdr: =?us-ascii?q?9a23=3AHqL83xXT+rfxv4FkW6rZdU4rZvXV8LGtZVwlr6E/?= =?us-ascii?q?grcLSJyIuqrYYhaOvadThVPEFb/W9+hDw7KP9fuxBCpYud3b7TgrS99lb1c9k8?= =?us-ascii?q?IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUhrwOhBo?= =?us-ascii?q?KevrB4Xck9q41/yo+53Ufg5EmCexbal8IRiyrQjdrNUajZdtJqovyhbCv2dFdf?= =?us-ascii?q?lRyW50P1yYggzy5t23/J5t8iRQv+wu+stdWqjkfKo2UKJVAi0+P286+MPkux/D?= =?us-ascii?q?TRCS5nQHSWUZjgBIAwne4x7kWJr6rzb3ufB82CmeOs32UKw0VDG/5KplVBPklC?= =?us-ascii?q?EKPCM3/2HNjsx7kbxVrhSvqRdix4LYeZyZOOZ7cq7bYNgUR3dOXtxJWiJBHI2y?= =?us-ascii?q?coUBAekZPetasoXwqVQBogexCwayH+Pi0SNIi33s0KEmz+gtDR/K0Qo9FNwOqn?= =?us-ascii?q?TUq9D1Ob8dXuC00KnD0DLNb/RU2Tb86YjIaQ0qrPaSXbJ1dsrRy0guFwLejliL?= =?us-ascii?q?s4zqIS6a1uQXvGiH9eZvSeWvi2s+pgx3vzOhyMAsiozTiYIUzFDJ7T95z5goKt?= =?us-ascii?q?24UkF7fcSoH4dXtyGfMYZ9X8AsQ3lwtSonxbALtoS3cSgXxJg92RLSZOKLf5KV?= =?us-ascii?q?7h77SuqdPTN1iGh4dL+xmRq+61Wsx+7yW8WuzlpHrSxImcTWuH8XzRzc8M2HR+?= =?us-ascii?q?N4/kemxDmAyRje6vpBIUAojarbLIMhwqIompoTr0vDGij2lV3qjKCMbEUk+/Wo?= =?us-ascii?q?6//9brX6pp6TK490igbkPqQohsO/Gvg3PhILX2ia/eSwzLzj/UvnT7VWlvA6j6?= =?us-ascii?q?bUvZ/AKckbu6K1GRFZ34k95xqlEjuqyNEYkmMGLFJBdhKHlY/pO1TWLfDjE/i/?= =?us-ascii?q?h1WskDF2x/HJJ7HuGZLNLmXFkLj9Y7l98FVRyBYzzN9D55JUDasNIPToWkDrrt?= =?us-ascii?q?DYARg5MxKsz+b9FNp9zp8eWX6IAqKBMqPStlmI6fgzI+mMfoAVvi3wK/oi5/7o?= =?us-ascii?q?iH82g0QdfbW30psNc3C0BPNmI1+WYXD0mNcODX8KvhYiTOztkFCCUzxTaGyuUK?= =?us-ascii?q?I//TE7D4SmDYbdRo22jryB2Dq7H5JNaWBbDFCMDWroe5+DW/cWZyKYOtVhnSAc?= =?us-ascii?q?Vbi9V48h0gmjtBfkxLV8MOXU/CwYtY7k1NVu5u3ciw89+iJuA8SayWGNQHl+nn?= =?us-ascii?q?kUSD8uwKB/vUt9x0+e3qh/hfxYE8Fc6O1NUgc7LpPT1fJ1C8r1Wg7bedeJUlmm?= =?us-ascii?q?SM28AT4tVtIx38MOY0FlFtq/khDMxTCqDqQJmLyMAZw77rjT32PtJ8pnzXbJyr?= =?us-ascii?q?UhhUE8QsRTLW2mmrJ/9w/LCo7IlUWZi7ildaAC0y7I6miD0XCOvUFDXQ53SaXK?= =?us-ascii?q?Q3YfZk7MotT44kPNVLiuCLs9PgtG086CJbNAasf1glVeWPfjJNPebnqxmmaxAh?= =?us-ascii?q?aIwKiBbI/ue2kE3SXdDlIIkwYJ8nacNgg+BzmhrHzEADxoC13vf1vm8fNip3Oj?= =?us-ascii?q?Uk800waKYlV/2Lqt4BEVn/2cS+gI07IcoighsTR0HE2l39LSEdWPuxRucL9bYd?= =?us-ascii?q?Mn71dNzXjZuBBlPpy8M6BigUYTcgp2v0Pq0hV4FJ9AnNMkrHw00QVyLriY30lZ?= =?us-ascii?q?dzOC2pDwOKPYJXXu/By1bK7WwF7e2s6M+qgT8PQ4t0njvAaxG0os6XVoyd9V3G?= =?us-ascii?q?ed5pXRFwcSVIrxUkcu+xhhqbDaeTMx54TO1X1jKaO0qCPN28o1BOs5zRatZ9Rf?= =?us-ascii?q?P7mHFA/1Ds0XHMuuJ/Ypm1iucxIIJudS9LQ7P8m+bfuJxLarPPp8nDKhlWlI+p?= =?us-ascii?q?1y0liN9yViUO7FxIwKzO2d3gedUDf8llihuNjtmY9YfTESAna/yS/8CYFNfKJy?= =?us-ascii?q?eZgECXyyI8y3wdVznIXtVGJZ9FG9AVMGxM6pdgCIY1z7wwJQyVwdoWa7liug0z?= =?us-ascii?q?x0jzYpo7Kf3CPQx+TicB0HN3VPRGl/kVfsJo20gMoAUEivdQgpmwOv5VzmyKhD?= =?us-ascii?q?uKR/M27TTF9Tfyj4NWFiVbCwtqaZbs5U7pMotitWUOGmblCcULL9pQUV0z/7FW?= =?us-ascii?q?tE2D87by2quon+nxFihmOSNnJzrGbHdsFq3hfS/8LcSuBL3jUdWSl4jCPbBl+m?= =?us-ascii?q?P9mm5d+UjYvMsviiV2K9UZ1eaTXrwp6duyu6/2JqBQaykOy0mt3iDQc1yzT718?= =?us-ascii?q?VwWSXOshn8fpHh176mPuJ/YkloGFj85tJ8GoF/loswgI8f2WMBi5qP43UHi2Dz?= =?us-ascii?q?Pc9c2aLkY3oHXSQLzMLN4Aj5xE1jKWqEx5z4VnqB3sthYMO6bnkK1SI96MBKDq?= =?us-ascii?q?iU4adAnSt0pFq3txjRYf9nkjca0/su52YQg/sVtwo10iWdHrcSEFFcPSztjBSI?= =?us-ascii?q?88myrL5Ja2arcLiw0ld+nN+6AbGZugFcWXD5epY+Ei9r9Ml/NkzD0GHr4IH+ZN?= =?us-ascii?q?bQdc4TtgGTkxrYlehVL5Yxlv4Uiip9JW39unMkxvUgjRxzwZ66p5KLK2J3/KK2?= =?us-ascii?q?GhRYLCH6Z9sP+jHxiqZTht6W0JqyHpVlADkERoHkQumvEDIWqfTnMACOHSY5qn?= =?us-ascii?q?uHH7rfGhOQ5F1gr33RD5ChL2uXK2UBzdV+WBmdI1RSgAMKUzU8hZ40DQOqy9Ln?= =?us-ascii?q?cEdi4DAe+EL4pgFLyuJyOBn1Sn3fqxuwajcoVJifKwJb7hlY6EfINcyR8PpzED?= =?us-ascii?q?te/p29sgONMHeWZxlTDW4XQEyEHErvPqKp5dnd6eiXGvSxL/XJYbWUpuxRSe2E?= =?us-ascii?q?xZSx3Yt65zyMLNmAPmF+D/0n3UpORW55G8LElDgUVSwXkT/Cb86BqBe65CJ3st?= =?us-ascii?q?i18O73VwL3+YuPF7xSPM13+x+snKeDM/Wdizp4KTZE1pIA3HHIx6IZ3FIIjCFu?= =?us-ascii?q?bTatG6watSHRVKLQhrNXDxkDZiNwNMpI67wz0xJIOc7chNP12KB3juIpC1dFUl?= =?us-ascii?q?zhn9+madYMI26jKFPNHFyLO6ieJT3X38H3ZruxSbNKg+VSqx2wvjObHlTtPjud?= =?us-ascii?q?ijbpUAqvPvtUjCGBOxxeup+yfQpxCWT5S9LmcBK7OsdtjTIq2b00mm/KNWkEPD?= =?us-ascii?q?dhdUNCtKad4j5egvplAWBB6WBlLeackSaD8+bYMooWsedsAilsjeJV/Wk1xqBa?= =?us-ascii?q?7CFBS/15gi3SocByo1u+iOmA1iJnUAZSqjZMnI+Lp19uOKvD+plFQ3nE+BUN7G?= =?us-ascii?q?WLBhsQu9RlD8fju6dKytjAjKjzMitN88rI/csAAMjZMMyHMGA/PhX0Az7bFg0F?= =?us-ascii?q?TSKsNWHEnEFSiu2d9niPopg9sJjsl4IESqVHW1wtCvMaFkNlEcQEIJdtRDwkia?= =?us-ascii?q?abgdUG5Xq/thnRX9lavp7GVvKUG/rvLiqWjbheaBsM27/4Kp4TNoLj0Ux4dlZ6?= =?us-ascii?q?hJjKG1bXXd1VuSJudQg4oEFM8HhlUm0zwFjpahiz73APD/K0hQA5ig9/YeQr6T?= =?us-ascii?q?ft7Ew6KUbKpSsqjUkxgs/pgD6Lfz7tN6ewWodWBzDzt0grPZPxWxx1YhGqnUx4?= =?us-ascii?q?KDfEQKpcgKBhdWBkjw/cv4BCFuNCQqJfYR8f3/eXa+8v0VRGpSWt3VVH6vfdCZ?= =?us-ascii?q?t+iAsqdoahoGhP2w15ct46O7fdJK1RzldOgKKOuzWn1uE1wAAFIEYM/3meeCkS?= =?us-ascii?q?uEwHLrMmPTan/vRw6QyenDtOYHQMV/0vov5w7EM9POWBwDzm07FYMECxMPKQL6?= =?us-ascii?q?CCtmfcks6IR08/2VkTl0lZ57R219ksc1aMXUA10LSRDwgJNdbFKQxNacpd6mLc?= =?us-ascii?q?fSKVvOXOxpJ1JJm9GfruTe+Vt6YUg1ioHAA3EIQQ9s4BBIWj0FnELcf7K74I0Q?= =?us-ascii?q?8t6xrwJFqbFvtJYg6EkDccrs6kzZ93x5RSJjYTAWVlKyW4+LbWqhUsgPWdQNc8?= =?us-ascii?q?em0aUZccNnIqRM26nDZUsGlaAzmp0+IW1ROC4iTmqSTKFjn8aNRiZOyKahxwFd?= =?us-ascii?q?G24zQ/87S2iFLN9JXROX36P8x4utDT8eMau4qHC/RMQLZgqEfThZNXR3OwU2HV?= =?us-ascii?q?D964PIPwZJMvbdzpEHa1SEazizYoT8f3JtmtNLGEgR3vRYZXsIib2yovNcmjGT?= =?us-ascii?q?ECAx1wvf0M5LpgZQ0fZJo2eRrotwMkN6OhJgeZ09KuTn2iKTtQUvlT1+K6Z6ZY?= =?us-ascii?q?zyA0dO+11GMgTo0mz+mw6UMNX48FjhXfxfaleolfXjP+FWBaewXKuSU2jXNhNv?= =?us-ascii?q?oozuc53hzIrUEWMyqXe+xxdGxEo9Y8CEuPLnpqD2o4QFmcjZbe7gO3wbAd4TFd?= =?us-ascii?q?n9dV0O1CtnjypJnfbyywWKazs5XarzIgbcQ6o612KYHjIdGGtZPEkTzZUJnQsh?= =?us-ascii?q?aIUCG9F/pChtdcOiRYT+dUmWs9I8wJpZJB6VYtVsc5P7FPFKgsprWtaTp4DS4T?= =?us-ascii?q?zTQUWJ6B3D0CmOizwKHWlhGOf5Q+KBYEqolNgsMBUy5qZSMTvKCjV5/MmG+CVm?= =?us-ascii?q?gGOwYT7QNC5QIGio9wfv7q4IvOTJ9Q1TFWueh4Ui3VGZl071H7UH2ZgUDkSPW9?= =?us-ascii?q?lOykxRhdzPbt0tYHRhFwEU1dxuZQlksvLrF4MbIdsZXLsjCSc0P2pWztyPa8KF?= =?us-ascii?q?lX18LUa0XyDJDZumrkTi0c5XoUSJdUx37BE5QfiBB2Z7s1pFpSOoCmYVzx5yYk?= =?us-ascii?q?xohzGLm4T8+rzU4/rXkaXyeqD8ZBC+Z+vVLNXj1lYoykqJXiO5VWWW9e4ISTpU?= =?us-ascii?q?pDnkhxNCC00oZTK8ZI4jEQRjdPuimdsMG0SMJdxc98F4UMLctnu3fhBKNEP4Cc?= =?us-ascii?q?rGE0urP11nDU4CwzsFC+xDW3Gq+3UfhZ/3EAFQo1J2SSsE4vD/Ej8m3K6FDCrk?= =?us-ascii?q?h0//tHBriIlUhxuixyHopJBjlSzn2lM05zQ2NYs+pELKTVcspcQ/Y2ZR+uNBw+?= =?us-ascii?q?FeIm30KT8kFumHf1eSpyuRVG+yrFRQk7STEVgqvxmT0ZssymNyUWRI5IbTUgai?= =?us-ascii?q?fFKhiUmSNMsRZedU5lRY4WDsxC+7EB0ote5tDCRlq0KSEZQBxiMRo10eJYlU5H?= =?us-ascii?q?qkqYYy7cDQ2sdfbBqRB3eMCRrMmyLPvn4AhHkITnsPsj96UCQX2mlhehQdfEr4?= =?us-ascii?q?/zrteKrFeBdL/kM+2gZn/MVCLDjQqthbciFZXK/DPeMAtaK5l71XoreoLtCWjV?= =?us-ascii?q?MhRaP6gbPVZUVbhmadVapeBXf9NkeKEM+aJ2GhKLWhbvF5e1oPlAMFnTWSzULz?= =?us-ascii?q?+d/eynvYLT8bvdRPDgZsOW3XbIWaZ3MYph5DbmBbjqyZde9VTy2vhz7EN2U1/G?= =?us-ascii?q?MzqOrN75PAME+NGidlf+vp0uBT7WApBwn2T2y05dacUXWDOl8I4EyJxH9Xn8U+?= =?us-ascii?q?R43VbvsOdK7blr9ZE346x1ycezPardMvpavlN7DhWWGwln+I4gD3R4R2BUfuAe?= =?us-ascii?q?MuzRfbgDgcDote/3C7Qd6AeJ9OxBddvHO0bBl9GlCj6CVBNEnB0OqSIBIwuY0P?= =?us-ascii?q?6FhbF7Rdi5quj+x00i/UKyLhgYw7Bx/Y2E4LaHpPfLbxvNyrgJQrDqRtjvrrs2?= =?us-ascii?q?pkyS+eYplKUJemxoeQ2oDPYSVsgBxmf6168qyTggE8TZH7Lv4PRDTW42nir8m5?= =?us-ascii?q?BhGFUbAu8UHaCV8otAg2g1gPHZNtkKcqBYgGmPCx+kErgGyXG19yubOm5lggvB?= =?us-ascii?q?0xvoW2O88Ef2rTNkQSvL19rjl1BaVr2zBUhMQyqpJVV3vymUMQruqtX3pb8141?= =?us-ascii?q?0sPWz8qt2Bjm2hN61LH8fnPtyTPTE0pE4LjJ02XtGv25oUGcC6INcK9HFxdOXe?= =?us-ascii?q?5niuky9cp6dHm4ve7d2U+vrNG3mglLeWq7KXxDBX0nI4p00w6si8NvHS4N2HW/?= =?us-ascii?q?ao2HwXTydxoQvBWAO6paLAolAII0OL1lzLmIsQMtFfw3Y4ylns5PI/T9Ir6AVe?= =?us-ascii?q?CoHAausNpTDuOTv0xVKfbMwyViSFzjRYAEn6EVhiF6g6wm7wu9jJlXjI8V0yWo?= =?us-ascii?q?Zwb1DnhQBwD4ggL0It7EMawisFEQgIcxybDbeoBUr/LYQeTkgDdQ6H3KWmdacr?= =?us-ascii?q?wE1z2K2g6PXUbexmCKoHLuxdgRKWnFhHBpIWtrUTQLd7e19b6K7XqRbtBpPiX/?= =?us-ascii?q?jnj3UwM+O6QtxU8MAerXsi4R2/SwCm6Zhd87YRkIqIebJcYZjQoMB86F9q5ToU?= =?us-ascii?q?dixIgBVylB25Xv4Bq+Dk+NjUqoKo6vypVKYvWeoY6wQ0C355j5vqj1ApucvX2P?= =?us-ascii?q?tESo3JlYT/9xhAI2WQt4bEyRZ8JvQBK5mwcbZ77XoHOTIRJ30QMtqNcfU85TFi?= =?us-ascii?q?MCnL7VxYHswMfc8YPNbKmQ1MiE3pWbRT+9HeGlCGC4Z8adoo72vxyDA665c8VP?= =?us-ascii?q?jv6COuL5DF815NJ+9DjDlrlN/apegUwODdBzIL7nSCcBh63D+CxIeRBPrq+uWM?= =?us-ascii?q?0t7UXUscHiEqS4ddOCaC+Qu/S+WulZXpSQ2V5dXxgJI/aEKQXma+nLkBsqtXDe?= =?us-ascii?q?FAjTj00SZEGYDonfKVtMCs53FNul1ACoZz4gXPGL9DMZVjJRT4is6rS1BkBiTl?= =?us-ascii?q?ZMHbahouueSRxucW4OVyLlD+apEfIhIFzbL69HVUQxB2SLHsolaWQeIRZdVhSP?= =?us-ascii?q?PerXBZ84FgJLEVPFibupPqqi1EqFcsAA8mcLUwtCBVdlHSnA1JXKb5oKIAihEC?= =?us-ascii?q?Xt59o0BMH3y/NXkj6DrGWqRVjbWRB+YO8jqJVKwOTl9kMiVgTBOpwJ9uYaemne?= =?us-ascii?q?hbsmNamSNwuPcq3CZ8RBSipS3sp7kA2TYh+LGkqjoBuWZKTviFkyvSD1VM0ugK?= =?us-ascii?q?h78GC3n+8Vy8fGUDbIzq7bloO8vg85Uh43M4YRkkZC0JQ+CgCyD2j6OVDY2Cq9?= =?us-ascii?q?ZciwCXuMTOd7C/Ny4SOaohyRj7XXhyzhDenAp08GsMWjig6t4kK5m6OcYh3CWo?= =?us-ascii?q?AnLXdFcL4qNOq8vxrkUGTO45ZFJu2mlj1dKHRiIVTszVB2k1lhQkaXlDcJ9b5h?= =?us-ascii?q?8VC7Iogi2Rsqdb8Q8aZjbUEoK4+ojfhsrI1nw9Qs1sxm3IvKGFgYkq0HJ9kdNu?= =?us-ascii?q?8iGOoGgSd/DfU8J0AHjz0Ydfyerka/qxsuAHTJZmx6mgUf8DNMmj4mi22JRxV0?= =?us-ascii?q?+7x7QeAUC2MOseybfaSSulT3OXWfiTeWiWgzk5KlLy5QWvLlAvacdKsVUyMu3Z?= =?us-ascii?q?i55Yig3uTLJ0RiKLpVPBy2wjK+wafRosuIi7YwwKUPIRZ++EKOgs3vI+BlUMb3?= =?us-ascii?q?vSECp4EeC2t0CinJRhN3Vm/0r6ffzn8hr6P9uKBhkEDYnao4Z++fy+QWKAN2Fv?= =?us-ascii?q?zBl2PERv7OffEFIxtu5AfJqLm9jfmch72/Yfd/hxKS09psITmoV75ImW0MeLcQ?= =?us-ascii?q?nRzpH2JdHUvviXHebSz0EremFGSLoWfxn554IgPt42Q7fTB6dWvQwABagmR5ws?= =?us-ascii?q?L3vx9KBxLA5obg7RZai7gsr0qeKPfJdUoWHZ7k4oJifGpxID0uC0TRB8b52ygn?= =?us-ascii?q?XyIZMwRjFGr9B2CBtpBohPG8QGrwW5BZ6Ygqe7hMGt+0lioe8FrbLwCuzW1NS+?= =?us-ascii?q?x4h+RIZV5UqXPDvKH6lrhkNljviugvfezJb+FNnuedQeVOh0WmTFcKPJHp2jKj?= =?us-ascii?q?KSPcLxY0BG/KCY0LJ4ShWeejv0XquHtC2hMfVr/187yohmc+bJyzwt9b7b0sPo?= =?us-ascii?q?Z25HviejsWKJNJxH4V3EHezeRRNURuab/2t+GK0XbJf09P0QPtA4x9ic+QZz5i?= =?us-ascii?q?xY0MSZO6ihslPM2kVjeJLcKEvmxT00WZEOIBulKkssnW7ZpWjBAXRGMMerN9Nh?= =?us-ascii?q?gNCLARzx/0Nxg30iZnZdGmr0QtecIWwb28O4ZA2X+wNHFtIDn++seU4kra2/Uu?= =?us-ascii?q?hoNY9DmeWtrrkHlsxpKy7XTshAIy7QNKN2PiZWDujXv1gnfBoEs7kzWocoapmC?= =?us-ascii?q?J0wJMFuAySzs1wvNz1X0eMa32aaKPikW6HNHwKzB0TdXugm5tuyVgsr5ULDWdJ?= =?us-ascii?q?v2RuLdMDI5VjGGQjQ/CUOp9k24tPoEvfqYJ2Afr0sKYiKTDg4cuKRvrdnWDm/O?= =?us-ascii?q?luxvZpoKhOqVWyroUi13iLIyBjpXtUCLW/cDFxPZb3zmgGVHowGiO/lM/W7lb7?= =?us-ascii?q?2f26pVVOwWApdWfv2fXdTYZehUJy00mTUBJOa8Y9rcoq420l3SVmQZCajI+0Oa?= =?us-ascii?q?TEONXPycwyjkXZ4Uv4gpoCYo/MzfnjNvGaTSI7mfvyKu8pK/jCuAu+3eU24tY1?= =?us-ascii?q?YvgOIDG2mM2x9AJ3sBC94LuUHhWKmAZ1xD1Hgxk+JhxwcMeBhvUn1pynBWh/i9?= =?us-ascii?q?GshFRlMVj26jW+MGY05tDDMx/E6K5QvybcYGuc/NW29U7qEMRpYFLPk09InXP7?= =?us-ascii?q?MdwPQu3DJgpCw3qCCdAE1AgQKL9KrQBr5zyaNY6Wk+4f52QhLHfzSKaWXDy4y7?= =?us-ascii?q?G+pT1CxupjbizMOSsedzZ5VAoIQsPlYWSQdxJMLc5ngVT2Tz2hmzpD6hETieKS?= =?us-ascii?q?5f6zEOc39WPt1pxvN25U6bPu3K7lmd4ud48EY=3D?= X-IPAS-Result: =?us-ascii?q?A2HWBABDAqNY/wHyM5BeHAEBBAEBCgEBFwEBBAEBCgEBgyd?= =?us-ascii?q?hgQmOU6hXJguHbVcBAQEBAQEBAQIBAl8ogjMbDT08AQEBAQEBIwINZQIkExQgD?= =?us-ascii?q?gMJAhcpCAgDAS0VHwsFGASJSg6wVzomAotBASAFhkyGPoFIgQ8RAYYBAQSbcoZ?= =?us-ascii?q?vgyCHeA2Be4hbDIYhApMVWHgINB0VPYRFHYFidAGHcoItAQEB?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea10.nsa.gov with ESMTP; 14 Feb 2017 13:15:13 +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 v1EDF0og007182; Tue, 14 Feb 2017 08:15: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 v1EDEwb5060911 for ; Tue, 14 Feb 2017 08:14:58 -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 v1EDEw80007171 for ; Tue, 14 Feb 2017 08:14:58 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1ApAAAtAqNYhxy3hNFeHQEFAQsBhDOBCaJRkEWEGxoQh21XAQIBAQEBAQITAQEBCgsJCh2FRoIjiWsOnmuRbDqMCgWGTIY+gUiHIgWbcoZvgyCHeA2Be4hnhiECkxWBVzQdFYQyUBEMgWI/NQGKHwEBAQ X-IPAS-Result: A1ApAAAtAqNYhxy3hNFeHQEFAQsBhDOBCaJRkEWEGxoQh21XAQIBAQEBAQITAQEBCgsJCh2FRoIjiWsOnmuRbDqMCgWGTIY+gUiHIgWbcoZvgyCHeA2Be4hnhiECkxWBVzQdFYQyUBEMgWI/NQGKHwEBAQ X-IronPort-AV: E=Sophos;i="5.35,161,1484024400"; d="scan'208";a="5943215" Received: from emsm-gh1-uea11.corp.nsa.gov (HELO emsm-gh1-uea11.nsa.gov) ([10.208.41.37]) by goalie.tycho.ncsc.mil with ESMTP; 14 Feb 2017 08:14:57 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3AzLgKMR+KrOY1p/9uRHKM819IXTAuvvDOBiVQ1KB4?= =?us-ascii?q?0+gcTK2v8tzYMVDF4r011RmSDNids6oP0beempujcFRI2YyGvnEGfc4EfD4+ou?= =?us-ascii?q?JSoTYdBtWYA1bwNv/gYn9yNs1DUFh44yPzahANS47xaFLIv3K98yMZFAnhOgpp?= =?us-ascii?q?POT1HZPZg9iq2+yo9ZDeZwVFiCChbb9uIxm6swXcvdQKjIV/Lao81gHHqWZSde?= =?us-ascii?q?RMwmNoK1OTnxLi6cq14ZVu7Sdete8/+sBZSan1cLg2QrJeDDQ9LmA6/9brugXZ?= =?us-ascii?q?TQuO/XQTTGMbmQdVDgff7RH6WpDxsjbmtud4xSKXM9H6QawyVD+/6apgVR3mhz?= =?us-ascii?q?odNzMh8G/ZlNF+gqxYrh+6uxBz35TZbJ2JOPZiYq/Qe84RS2pbXsZWUixMGoyz?= =?us-ascii?q?b4oTD+EcOuhYqIv9ploPrRulGAKhA/3vyjpPhn/03Kw60v8hHBrc3AM+At0OsG?= =?us-ascii?q?7brMnvOKgOVuC1ybDFwDPeZP1Y3jf97ZLHchEnofyUR7J/b9feyUk1GAPZlFmf?= =?us-ascii?q?tYvlPzaT2+8QsGab9/JtWfyzh2MjsQ19vzaiytk2hoXUhY8YxErI+Tt6zYszON?= =?us-ascii?q?a2UlR0YcS+H5tVryyaN5V5QsclQ2xwvSY7xaAKtYShfCcU1ZsnxwTQa+Cdf4eU?= =?us-ascii?q?5RLjUf6dITZ+hH17ZLKynwi+/VSkx+HmS8W53khGojBYntTPuH0BzQLf58ufRv?= =?us-ascii?q?t45Eih2DKP1w7J6uFDJEA5jbTbK5smwr4yl5sTsF/DEzTsmErokaCWdl8r+vSy?= =?us-ascii?q?5+v7ZbXmo4eQN5VohQHmLqQuhsu/DPwjMgcQW2ib+OK81KDs/EDiXLVLjuE5kq?= =?us-ascii?q?nesJzAI8QbvbS2DxVa0oYk9RbsRwuhhc8VmXgBMUJtZAOMj4+vPUrHZv//E6SR?= =?us-ascii?q?mVOpxQlq27jjOb/zA46FembGl7XzfK1V8UNQyAMvi9tY4sQHWfk6PPvvVxqp55?= =?us-ascii?q?TjBRgjPlnszg=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0EqAABDAqNYhxy3hNFeHQEFAQsBGAEFA?= =?us-ascii?q?QsBhAiBCaJRkEWEGxoQh21XAQEBAQEBAQECAQIQAQEBCgsJCh0vgjMZDz08AQE?= =?us-ascii?q?BAQEBIwINgQuCI4lrDp5rkWw6jAoFhkyGPoFIhyIFm3KGb4Mgh3gNgXuIZ4YhA?= =?us-ascii?q?pMVgVg0HRWFAhEMgWI/NQGKHwEBAQ?= X-IPAS-Result: =?us-ascii?q?A0EqAABDAqNYhxy3hNFeHQEFAQsBGAEFAQsBhAiBCaJRkEW?= =?us-ascii?q?EGxoQh21XAQEBAQEBAQECAQIQAQEBCgsJCh0vgjMZDz08AQEBAQEBIwINgQuCI?= =?us-ascii?q?4lrDp5rkWw6jAoFhkyGPoFIhyIFm3KGb4Mgh3gNgXuIZ4YhApMVgVg0HRWFAhE?= =?us-ascii?q?MgWI/NQGKHwEBAQ?= X-IronPort-AV: E=Sophos;i="5.35,161,1484006400"; d="scan'208";a="3146451" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from mx1.redhat.com ([209.132.183.28]) by emsm-gh1-uea11.nsa.gov with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Feb 2017 13:14:56 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E7033804EB for ; Tue, 14 Feb 2017 13:14:56 +0000 (UTC) Received: from Thinkpad_450.brq.redhat.com ([10.40.3.114]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v1EDEtSi008452 for ; Tue, 14 Feb 2017 08:14:56 -0500 From: Vit Mojzis To: selinux@tycho.nsa.gov Subject: [PATCH] libsemanage: Perform access check using euid instead of uid Date: Tue, 14 Feb 2017 14:14:48 +0100 Message-Id: <20170214131448.22837-1-vmojzis@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 14 Feb 2017 13:14:56 +0000 (UTC) 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 Use faccessat() with AT_EACCESS instead of accesss() in order to check permissions of effective user. access() calls checking existence of a file (F_OK) were left untouched since they work correctly. This enables setuid programs to use libsemanage. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1186431 Signed-off-by: Vit Mojzis --- libsemanage/src/conf-parse.y | 7 ++++--- libsemanage/src/semanage_store.c | 18 +++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/libsemanage/src/conf-parse.y b/libsemanage/src/conf-parse.y index b527e89..d72a0c2 100644 --- a/libsemanage/src/conf-parse.y +++ b/libsemanage/src/conf-parse.y @@ -30,6 +30,7 @@ #include #include #include +#include extern int semanage_lex(void); /* defined in conf-scan.c */ extern int semanage_lex_destroy(void); /* defined in conf-scan.c */ @@ -361,7 +362,7 @@ static int semanage_conf_init(semanage_conf_t * conf) return -1; } - if (access("/sbin/load_policy", X_OK) == 0) { + if (faccessat(AT_FDCWD, "/sbin/load_policy", X_OK, AT_EACCESS) == 0) { conf->load_policy->path = strdup("/sbin/load_policy"); } else { conf->load_policy->path = strdup("/usr/sbin/load_policy"); @@ -375,7 +376,7 @@ static int semanage_conf_init(semanage_conf_t * conf) calloc(1, sizeof(*(current_conf->setfiles)))) == NULL) { return -1; } - if (access("/sbin/setfiles", X_OK) == 0) { + if (faccessat(AT_FDCWD, "/sbin/setfiles", X_OK, AT_EACCESS) == 0) { conf->setfiles->path = strdup("/sbin/setfiles"); } else { conf->setfiles->path = strdup("/usr/sbin/setfiles"); @@ -389,7 +390,7 @@ static int semanage_conf_init(semanage_conf_t * conf) calloc(1, sizeof(*(current_conf->sefcontext_compile)))) == NULL) { return -1; } - if (access("/sbin/sefcontext_compile", X_OK) == 0) { + if (faccessat(AT_FDCWD, "/sbin/sefcontext_compile", X_OK, AT_EACCESS) == 0) { conf->sefcontext_compile->path = strdup("/sbin/sefcontext_compile"); } else { conf->sefcontext_compile->path = strdup("/usr/sbin/sefcontext_compile"); diff --git a/libsemanage/src/semanage_store.c b/libsemanage/src/semanage_store.c index f468fab..805bd60 100644 --- a/libsemanage/src/semanage_store.c +++ b/libsemanage/src/semanage_store.c @@ -517,7 +517,7 @@ char *semanage_conf_path(void) snprintf(semanage_conf, len + 1, "%s%s%s", semanage_root(), selinux_path(), SEMANAGE_CONF_FILE); - if (access(semanage_conf, R_OK) != 0) { + if (faccessat(AT_FDCWD, semanage_conf, R_OK, AT_EACCESS) != 0) { snprintf(semanage_conf, len + 1, "%s%s", selinux_path(), SEMANAGE_CONF_FILE); } @@ -552,7 +552,7 @@ int semanage_create_store(semanage_handle_t * sh, int create) return -1; } } else { - if (!S_ISDIR(sb.st_mode) || access(path, mode_mask) == -1) { + if (!S_ISDIR(sb.st_mode) || faccessat(AT_FDCWD, path, mode_mask, AT_EACCESS) == -1) { ERR(sh, "Could not access module store at %s, or it is not a directory.", path); @@ -575,7 +575,7 @@ int semanage_create_store(semanage_handle_t * sh, int create) return -1; } } else { - if (!S_ISDIR(sb.st_mode) || access(path, mode_mask) == -1) { + if (!S_ISDIR(sb.st_mode) || faccessat(AT_FDCWD, path, mode_mask, AT_EACCESS) == -1) { ERR(sh, "Could not access module store active subdirectory at %s, or it is not a directory.", path); @@ -598,7 +598,7 @@ int semanage_create_store(semanage_handle_t * sh, int create) return -1; } } else { - if (!S_ISDIR(sb.st_mode) || access(path, mode_mask) == -1) { + if (!S_ISDIR(sb.st_mode) || faccessat(AT_FDCWD, path, mode_mask, AT_EACCESS) == -1) { ERR(sh, "Could not access module store active modules subdirectory at %s, or it is not a directory.", path); @@ -619,7 +619,7 @@ int semanage_create_store(semanage_handle_t * sh, int create) return -1; } } else { - if (!S_ISREG(sb.st_mode) || access(path, R_OK | W_OK) == -1) { + if (!S_ISREG(sb.st_mode) || faccessat(AT_FDCWD, path, R_OK | W_OK, AT_EACCESS) == -1) { ERR(sh, "Could not access lock file at %s.", path); return -1; } @@ -639,7 +639,7 @@ int semanage_store_access_check(void) /* read access on active store */ path = semanage_path(SEMANAGE_ACTIVE, SEMANAGE_TOPLEVEL); - if (access(path, R_OK | X_OK) != 0) + if (faccessat(AT_FDCWD, path, R_OK | X_OK, AT_EACCESS) != 0) goto out; /* we can read the active store meaning it is managed @@ -650,13 +650,13 @@ int semanage_store_access_check(void) * write access necessary if the lock file does not exist */ path = semanage_files[SEMANAGE_READ_LOCK]; - if (access(path, R_OK) != 0) { + if (faccessat(AT_FDCWD, path, R_OK, AT_EACCESS) != 0) { if (access(path, F_OK) == 0) { goto out; } path = semanage_files[SEMANAGE_ROOT]; - if (access(path, R_OK | W_OK | X_OK) != 0) { + if (faccessat(AT_FDCWD, path, R_OK | W_OK | X_OK, AT_EACCESS) != 0) { goto out; } } @@ -666,7 +666,7 @@ int semanage_store_access_check(void) /* check the modules directory */ path = semanage_path(SEMANAGE_ACTIVE, SEMANAGE_MODULES); - if (access(path, R_OK | W_OK | X_OK) != 0) + if (faccessat(AT_FDCWD, path, R_OK | W_OK | X_OK, AT_EACCESS) != 0) goto out; rc = SEMANAGE_CAN_WRITE;