From patchwork Wed Apr 26 15:02:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastien Buisson X-Patchwork-Id: 9701533 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 2BE3460245 for ; Wed, 26 Apr 2017 15:24:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1D11426D08 for ; Wed, 26 Apr 2017 15:24:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 11C9E2843B; Wed, 26 Apr 2017 15:24:39 +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=-3.6 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=unavailable 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 258EC26D08 for ; Wed, 26 Apr 2017 15:24:37 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.37,255,1488844800"; d="scan'208";a="5233033" IronPort-PHdr: =?us-ascii?q?9a23=3Axh4sehcXEy0KBKDDh1bhjeIBlGMj4u6mDksu8pMi?= =?us-ascii?q?zoh2WeGdxcq4YhCN2/xhgRfzUJnB7Loc0qyN4v6mBTBLsc3JmUtBWaQEbwUCh8?= =?us-ascii?q?QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFRrlKAV6?= =?us-ascii?q?OPn+FJLMgMSrzeCy/IDYbxlViDanb75/KBS7oR/eu8QZjodvKag8wQbVr3VVfO?= =?us-ascii?q?hb2XlmLk+JkRbm4cew8p9j8yBOtP8k6sVNT6b0cbkmQLJBFDgpPHw768PttRnY?= =?us-ascii?q?UAuA/WAcXXkMkhpJGAfK8hf3VYrsvyTgt+p93C6aPdDqTb0xRD+v4btnRAPuhS?= =?us-ascii?q?waOTE56mXXgdFugqxdrhyquhhzz5fJbI2JMfZzeL7Wc9EHSmpbRstfVzJPDJ6y?= =?us-ascii?q?YYUMCOQBJeRVo5TzqlQQthuzHhWgCP/1xzNUnHL6wbE23uI8Gg/GxgwgGNcOvW?= =?us-ascii?q?zJotrrL6gdS/u1zLXJzTrdafNdxCrw6JXJchA6uvGMWrRwetfWxEk0DAzFk1SQ?= =?us-ascii?q?qZf+PzOS0OQBqXWU4PdmVe+0hG4nrht+ojmrxss2lobJgYcVx0nC+C5kw4g1Pc?= =?us-ascii?q?W1RFN0bNOrCpddtzyWO5FoTs4tXW1kojs2xqUItJO/ZiQG1YkrywLFZ/CZb4SE?= =?us-ascii?q?/gjvWPueLDp+mXlrYqiwhwyo/kil0uD8U86030tUoSddidnMs2wN1wTU6siaVv?= =?us-ascii?q?tx5keh1iiL1wDU8uxEPVo7lbDaK5482b48jIYTsETfES/2n0X6lqmWeVk/+ue0?= =?us-ascii?q?8ejnZ7TmppuEO491jAHxLLgul9SiDek3PQUCRWiW9fmm2LH98kD1Xq9GguAunq?= =?us-ascii?q?ncqp/aJMAbpqCjAw9S14Yu8w2/ACmi0NQZm3kHMV1EdAucgIjuJlHOJuz3Aumk?= =?us-ascii?q?g1m3jDdqx+zJPr3mApnXKHjDi63ucaxy605b1go/1cpf6I5MCrEdPPLzXVf8tN?= =?us-ascii?q?7fDh8/KQO03+bnB8971o4FW2KPBamZMKbIvl+T+uIgPfOMZJQPtDb6Mfgl6Obk?= =?us-ascii?q?jWUlll8FYampwZwXZWi6HvRkOUqWfXnsgswGEWcMvwo+UvfniFOGUT5OaHe9RL?= =?us-ascii?q?885jcnCIK7F4vDQZqtgLOZ1iehApJWfnxGCkyLEXrwb4WLRewDZzyUIs9gjjwE?= =?us-ascii?q?UqOsS44/2h6wqgD20b1nLvDb+icAr5LsyMB15/HPlRE17TF7EsOd02eLT25pgG?= =?us-ascii?q?wIQz420btlrkNj0FeD1rJ0g/tCFdxc//lJSBs1NYbAz+xmDND/Qh/OfsuTR1a8?= =?us-ascii?q?WdipHTYxTtctzNAUeEZ9B8+ujhbd0Cq2G7UVjaCEBIQo8qLA2Hj8P8d9y3Da1K?= =?us-ascii?q?Y/i1kpXM5POnO6hq5l9wneHInJk12HmKascKQTxi/N9GOYwmqJs0BUSglwUb/K?= =?us-ascii?q?XXoHfEvZscz55l/eT7+pEbkmMgpAycmEKqZRb93piUxKRPblONjEZWK+gX2wBR?= =?us-ascii?q?WJxrOScoXmYWMd0zvBCEIciQAc4W6GNRQiBiemu2/fAj1uFVbqY0zy6+lzs327?= =?us-ascii?q?QVEpwAGNdU1uzaK1+gQShfyeVfwcwq4EtD0mqzVuE1a3x8jWBMaYpwp9YKVcZs?= =?us-ascii?q?sw4Fld1W3DsQxyIp2gL7t5i14bawR3vlri1w55C4Vbi8Qqq2kqzAVqI6KCzFxB?= =?us-ascii?q?by+Y3Yz3OrDPKWn95hOva6nL2lzF09aZ4KQP6PMlq1n5uwGpDEUi+W1909ZJy3?= =?us-ascii?q?uc+onKDA0KXJ3rT0k37Rl6qK/AYiQm/YzbyXhsPbOzsj/Y1NIjHPElxQq4f9dD?= =?us-ascii?q?LKOEExf/HNEACMiqNuMqgESpbxIDPO1J7647I8KmeOWA2K63PeZvhiiqjWJZ74?= =?us-ascii?q?BhykiM7TZzSvbU35YZxPGVxhCHVznmjFemqcD3hZtJZSoUHmq4xynkAZReZqto?= =?us-ascii?q?cYYNF2iuP9W9xs9iiJ71R35Y6FmjCksI2cCzfRqSc0Ly3RdL1UkMv3yohzG4wC?= =?us-ascii?q?dpkzEstKaf2zbOw+v6fhodJmFLXHVijUvrIYWsk9AVQVWnbwkzmxuh/kv1269b?= =?us-ascii?q?pKFjIGbJWkdIYzL6L2d8XausrrCCedJA6Is0sSVLV+SxeU6aSr/hrBsG1CPjBX?= =?us-ascii?q?FSyyw7dzGtvJX5kAd3iGacLHZ1tnXZY8ZwyQ3Y5NzGSv5bxiAGSzVgiTnLGli8?= =?us-ascii?q?OMGk/dGVl5fYruCyTnmhWYNXcSnqy4OAqSS66HZxAR2nnvCznNznHhQh0SPh0d?= =?us-ascii?q?llSznIpg7mYob3z6S6Lf5nfk5wCV/m7Mp6HoV+nZUqhJ4M3ngbiI6Y/WEakWjv?= =?us-ascii?q?KtVXw6X+bGACRTQT2d7a/BDl2FF/LnKO34/5Tm+SwtZlZ9WgeGwawDky78dOCK?= =?us-ascii?q?eI67xEmzB4ol+koQLXZvhygi0Ryf0w534Gm+sJohYizj2BArAOGklVJS/smAqO?= =?us-ascii?q?79Clt6hXZ3igcb6r1Ep4g9+hEKuOogZGWHb2Yp0iBzN/7t1jMFLQ133+8pnkd8?= =?us-ascii?q?PNbdIXqBKUiw3Pj+5JKJ0vjPoHnjdnOXnjsn0/0O43lwdu3ZanvIidN2pi4qy5?= =?us-ascii?q?AhlCNj36ecwf4DftgrhCnsyOxYCgAo1hGikXXJvvVf+oDjQSuun8OgaQFj0zt3?= =?us-ascii?q?ebFaDZHQCB9Edst2jPHIyzN3GLOHkZys1vRAGHK0xChAAZRyk1np8lFgGq3cDh?= =?us-ascii?q?fl125jYL6l7/sBtMxfpiNwPjXWfHuAeodjA0RYCcLBtW6gFN+VzYMcmZ7uJ9ES?= =?us-ascii?q?FX4IGhrBCNKmycYgRHE3sFWkqaCFD/JrOu/8XP8/CEBuqiKPvDebuOpvZYV/eU?= =?us-ascii?q?wpKv15Br/ziSOcqSOXliFec02lJZXXB+GcTWhSkASzANmyLKdc6bqw+2+jdroc?= =?us-ascii?q?Cn7PTrRAXv6JOVC7dIP9Rj4RW2jr2HN+6XhCd0MixX2Y8JxXPSz7gfxlESgTl0?= =?us-ascii?q?dzaxCbQAqTLNTKXIl69ZFR4UdT58NNBS4KI6wglNPtXbh8jv2bFki/45EVBFVU?= =?us-ascii?q?bumsuxf8wFP3m9NE/bBEaMLLmGIyfLzNvvYaOkUrBQguRUtweruTaHHU/jPzKD?= =?us-ascii?q?mCPvVx+zMOFDliWbMAZZuIGnfRZnEXLjQ87+ah2nLN93iiU7zqYviX/NMW4cMC?= =?us-ascii?q?N8c19WrrGK9iNXnOlwF3Za7nV7KemEmiCZ7/TXK5sNrfRqAj50l/9B4Hggxbpa?= =?us-ascii?q?9j1EROdymCvUtNJupEumkuaXwDp9TBVOsipLhJ6MvUh6P6XZ951AWXLa8xIW9m?= =?us-ascii?q?ifEQoFp8FiCtH1vKBQ0NfPnrrpKDhe69LU4dccB8/MJc2cMXohPh3pGDjPAQQY?= =?us-ascii?q?UzGkLmDfiFZbkP2I8X2VtJc6oID2mJUSUr9bSEA1FvQCB0t/E9wNOol3US0/nL?= =?us-ascii?q?6clM4H+3y+rBzLS8VbupDITfWSAPr1JDael7lEaAMCwankIoQLKo37x0tiZ0Fm?= =?us-ascii?q?nITNHkrcR8pNoipgbwAqpkVC62J+Tmot1ELmcQ6i/HgTFfuokREskQt+ff4h9D?= =?us-ascii?q?Hy7FcrPlDKvjc/kFEtmdX5hjCcaDjxI7mqUoFSECf0tE8xMojnQwlvaw2yhk9k?= =?us-ascii?q?NDbeS7JXkbRgaXhhiBXAtptXBf5cUapEbQcKxf6JfPUnz05Tqj+7yk9H/ubKEp?= =?us-ascii?q?pilBE3fp6roXJAwxhjY8A1JKDKIqpG0ERQjLqUviC0zuAx3BMeJ0EV/WyPYiEI?= =?us-ascii?q?pk0IOaQ9Jyez5ONs8xaCmzxNeWgXSfUlvu9q9lk8O+SczyPsybhDJV6tN+aHNa?= =?us-ascii?q?OWp3DAldKUQlM3zk4HilJF8qZs3scsaUqbTV4vwaCKFxsTNsrCNBtVYNBI+HjX?= =?us-ascii?q?YCaOt//CwYhsM4WhEeDoTu+PtKEOjkKiAgkpA5wG7t4dEZm0zEHYMcDnIaYByR?= =?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?355pEKWgVcC321Ylqm4LRimwH9VdC+FmsVfXWDx/bJCos5jlOotdTXFO95GHrF?= =?us-ascii?q?dZikptOTajyZVAM8FN/iIMXD9XrDWFu9uyTNdM2dV4Dp8LJtd/tWzwGKZDOJiW?= =?us-ascii?q?uH05pKDgymXe+zAnq1e6xTOzG6CiQ+Je5W0eFR0jJ36CpUk3E+ss7mDS/0jXvV?= =?us-ascii?q?Bu4udbAKKDjUZqrTZ8H5BOBypJ2mu/I1R1UnZGr/1QKL7JfMxEX/kyeRivNgQi?= =?us-ascii?q?Ff4h2kyE5l10kWv8YyNprAda/T7SXxUsXykPnrjtgSEeqt2gOTICS5JHdy8hYD?= =?us-ascii?q?3BKw2Ggi1YoQhQa1lyW58HBtZK5asb0ZFT/srYRkamMTsFUwB6NgIkzfpfklZO?= =?us-ascii?q?sEefeS/DFgenaOjAsgZpcseLsM6mMun28B1Bioz5rOAy778DSGG+mQ2xXdDeqJ?= =?us-ascii?q?fxucaEtkSSaKv1MfCwbHHaQTfQihCwgKsrAIPR/yjPKgZbLYd1yWY8a5j7FWHL?= =?us-ascii?q?JQhGJ74cJ0dDT6B1d8hJouBAaM94Y6sJ/ahtBgyZSR/xBIOvq+RJIUjJSTTYMS?= =?us-ascii?q?qB7vS1oZjP4rzFVejgesuMym7fQ6JsIpd18yT0G6vx3I9F/Ur2x+1t+V9kRljA?= =?us-ascii?q?LyCBts7uJgcR6MmlbEvisYUjHSnKD5dojHrt2kZAetILQy2w7psX1o5W5W3tSe?= =?us-ascii?q?J8zkjzqvdd96dl6Ykw57Bm19u0Kb3VKfRAvk9tGgKUCRly9pUxHGh/QHhcYuoL?= =?us-ascii?q?J/fVeaQWk9zuq/ztGKMN8xCV/fJWacfcJ07dgMa/Ei+TRQZCnAgftT4QNhGc2O?= =?us-ascii?q?Kdm69oVcalovD02kA37FikKR4G17Rt6p2a+qeToe/Xch/RzaQFWqf2R8P8tLIs?= =?us-ascii?q?u1iI6f0jjr4OdXR/Yxe7H+gFSs4d2mDgwLgozS02FcPDEajg+PleWH0nhT/gh4?= =?us-ascii?q?pyH1MNGvMTB7aL+5pRnnsgkezDKtIWarxCmnqIFRO8Hb8C1H+r6y+TIGZ7hxHD?= =?us-ascii?q?yAz/Tn2o41/3tyB4RzHAz9D5kkpaTrO3H1tdXzK1OU9ktzOCJAzotN7stKQ06k?= =?us-ascii?q?E2N3botNOLlGuvIrNYBdb/JMCGISkpuF0XkIAxRsax1owBHtq9OtgR+mlkbvTC?= =?us-ascii?q?82OrjzNBo6Bfiorb5cGV/OnXHXa+gKCBrrWNxSpXyn4mslEj5NGgMevO596RQ/?= =?us-ascii?q?iy0WYeUTt/sRPbXxGpsrzbs0wUOUuT3UfRhYMFI8pU3XY91kDp/uQjRsw89BlG?= =?us-ascii?q?HIbae/wCvSzzOCfzwVuHZ9I3TSye3jtME1L7D1Z3Ba882Hjqs8LRj3fQ/F8oSZ?= =?us-ascii?q?dseEz7nxB3CJ84KU014lgN3iUDCRQNaQycDLywHkTqN5UEWlIMaRuZx7i3Ybw3?= =?us-ascii?q?0ldtwry16+/cc/d8C7ALNvlDkg6EhEJbFY4Osa0CXLJ8fEdQ9KzWpgjnEIXnWu?= =?us-ascii?q?bplHouOv2vQ8Ba988Zu2Ek4gmhWxqq8Y1D4KoDiJCUaq5EZoDBvMF97kh9/zEA?= =?us-ascii?q?ajdAgANhgBOlT+8TuPrv4t/BsJqn8uyuTroiR/0L9xgoAGRzl4D/gFE4odDZze?= =?us-ascii?q?hcSIzViZjn8A9XPn6KvJ3X3AV7KeUTNY2kZqtg928AJygEPX0CJ92Wa+Mz4yV1?= =?us-ascii?q?KjXc+0RCAt8QZdMfJMfNgRpbilH1V7FT+MvbHUWYC4Rqe8Az8WX3zDE18Z0hUu?= =?us-ascii?q?fv8zK2PYrQ701RMPNDgiRsk8jCpOsPzfrRFicX+3+ZZAZxwi+YzJmNEfnw9/2W?= =?us-ascii?q?yN7IT1MGAjI2U4BFKTqe4wyoWO61m4/vUgyK8cL8nZM+dE2RRnythqsFqbxDEf?= =?us-ascii?q?Rdiinh2DhRCJz1jeqPs9Ww8GtXqkFHEIFr4B3KAqpfJIt0OQj4lsSwQkh8Bzf/?= =?us-ascii?q?d9/UdhU0peqW3f0A4+NgOEvifYUbOA4Ly6rm6XpJSQtjULH2sUifXeINY9tmT/?= =?us-ascii?q?TIrmtL5oJkKq8POkWdpZPxozdMtl82Gg8oZ6UqojxcaEbOgBVfW7zot74Ylgsc?= =?us-ascii?q?Tdl5tFdKGWKxJG0+4D7HWr5OjKWLCfwV9TKTTrcVU0hzNyNzTBy01I9pe7uzkv?= =?us-ascii?q?BNqnlGkT9loPg2zzxmQwOxuSLwqKIWwjIs4ay2ujoHt3xESOWejijJBE5MzPQP?= =?us-ascii?q?l6gcDWjt5Ua7YHkZY4v4+KNnKtj49Yk9/3Q/Zg0ufy8BXeSgDSH8lb+HAoyLsN?= =?us-ascii?q?JBmRGMucTObbmoLSgRN7Qw0gzjR3lj0gfEmBZn7WoLTi+m7NA6OIW3IdwlyTaw?= =?us-ascii?q?GWjHaFYM5btEsMrvtVERSus7cldhwHh+3ciGQS0NX9bDG2EvjggrcW9Eao5M6Q?= =?us-ascii?q?cGF6k0hTaFpqtG8R8aYDfaFoSo4YfRkt3O2XYjUddm3GTWqbOZhpkyyn1qh8t0?= =?us-ascii?q?7jKSuHQVb+HYXMtsAn/914hBzez+Y+6gsvsASItgybSuTOUOMs+99muqwJ9qQF?= =?us-ascii?q?OqxqwCH1qlN+8O3rXbUyelSG2AXuSLd2mMnyonPUPp4BmoL0E3aN1UoEMnNevC?= =?us-ascii?q?nJFcnRX7UbxoXiWQuUPbzGs7POMVagI2uZqoewsRQe4NfeiTO+4uwOEkB1sIdX?= =?us-ascii?q?DJGzd5C+6svlK3moh0JWlg613gYevx6gDmLMeSGh4cHI7Gr55x/Oe3Rn6AOXB8?= =?us-ascii?q?zx19Ik10+/3ZF1svqu9Wa4yRksTIh9Rnze4FcO9gMSg8ut4QmYJj7pKZ0MWQfh?= =?us-ascii?q?HSyZbyI8/aov6CD/3Z0UsqZnlQUqAFbgPt+4U6Itk5VqXIErRHuxQcGbM3QIcl?= =?us-ascii?q?N2f26KF0MB1zfRDMa7iuhcnqvO2LbINOp3DK9lIwMDvcuxobx/y6UwN7a5Gqh2?= =?us-ascii?q?3sL50rRzNBrthtCh54E4tVH8MPsRCrA5mOmKG0k9Wx4V91u/cWsarsDfDHzNq4?= =?us-ascii?q?351rX5hb+UOEIi3cBKxqgkR5lOS9nO3M0p7rCcPtYdkETvR0QnbZar/aGYWyMj?= =?us-ascii?q?WOOsbidENd676c1Kh2Ug6NZCD4Q6WGqDekO+t67kkhzIx3YvbTxiQ3777HwNvy?= =?us-ascii?q?e31bpiC7oH6NNZtf6kHKBOPHUxJQSPqF63plHbYMYIv17ugON9sizMKb4wlp4z?= =?us-ascii?q?RIyNGFLLS5rk/QxkJ7corWLFD31CY9WIkKJgm/MEQrjWHWtnTdAWpTLtK6Jsl1?= =?us-ascii?q?mtmYFR/t6FdrmWEreGFBHnHnRcqeOWQB3MK+fgKK/hpRD9kfh+63ZVI4tqqqRO?= =?us-ascii?q?ltIJpKheWqtLQBkdZuMCzPWslaPyfOI79yPzpRCPjPpVcybh4Dqbg1VZ8/ZYKS?= =?us-ascii?q?L0MfLEeA1STywBPA0ULudNys072GLT0L8nVB07LF0T9MpxS2ufaZns3vSrbZY4?= =?us-ascii?q?/qXPTKKioqSimaRSguEUau4VqktOALs+GCIWcevF8UZjmfCBAXpq91ttjQD3LT?= =?us-ascii?q?lfdlfJIUmPCQQzrwRzFglKouGiZLsliBQ/gGFQnRdX/hmmtcuBe5K/9K533laq?= =?us-ascii?q?OXxqtPV+wRGItMfeWTQ8HEdvBGOzcoijIZNf6nf93SqrY2zlPFQGgCHqnW6lKe?= =?us-ascii?q?Vk+WQ/2bxzLtR4kVuZY7ujYw8NLKgiB3C7jIP6qYpzO28I64iyCYuenFW2kofU?= =?us-ascii?q?M6newCAG6bwBZcNm4IEdcVt1/xQv3IW0EZ0HMvlPIrwBIHZR5yTmwr13pagfKw?= =?us-ascii?q?MtNWRERSj260RvACKldtA3d4+U6M/x23YtEav83Xb3FR+6FKSocHKvQsro7NN+?= =?us-ascii?q?9Y2/st3TR7sAQmoi6dCBVblQvD/K3OT4xmwbgX3mQy9upqX0yJCxnCc3PczYzu?= =?us-ascii?q?X9lF2CZ1unfikcbYuMhiMbJbo8dyB1JcUnE+HczU4T0UCTK84wC1pRvuWW3GLQ?= =?us-ascii?q?=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2GKAgBYuwBZ/wHyM5BbGwEBAQMBAQEJAQEBFgEBAQMBAQE?= =?us-ascii?q?JAQEBgyqBbY5xmWeOJzwoiilXAQEBAQEBAQECAQJoKIIzIg1GKS8BAQEBAQEBA?= =?us-ascii?q?QEBHwIrJQEBIAIkGQEbGwIBAgECCQIFEggpCAMBHxEBBQEjEgWJfQEDFAGdfj+?= =?us-ascii?q?NdBgFARwmAoJiBYNlChknDVaDMwIGEoQyg26NXgEEkA6BA4w9kw2KaSeGTJJfM?= =?us-ascii?q?4EVWIEHJx0hWYReDxyBcmaIdQEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 26 Apr 2017 15:24:32 +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 v3QFNN0Y020668; Wed, 26 Apr 2017 11:23:43 -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 v3QF3CuF160390 for ; Wed, 26 Apr 2017 11:03:12 -0400 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 v3QF39Wg013981; Wed, 26 Apr 2017 11:03:09 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1DtAwDqtQBZekJTfUpbHAEBBAEBCgEBhUKOcZlnjmoOhhaEJlcBAgEBAQEBAhMBAQkLDAcohXIZARsbAgEDEhpUEQEFASMSigIBAxQBnXE/jXQYBQEcgwoFg2cKGScNVoMJAQEIIAIGCQEIhDKDbo1eAQSQDoEDjD2TDYpphnOSXzOBFYFeJx0hWYReDxyBcmaIdQEBAQ X-IPAS-Result: A1DtAwDqtQBZekJTfUpbHAEBBAEBCgEBhUKOcZlnjmoOhhaEJlcBAgEBAQEBAhMBAQkLDAcohXIZARsbAgEDEhpUEQEFASMSigIBAxQBnXE/jXQYBQEcgwoFg2cKGScNVoMJAQEIIAIGCQEIhDKDbo1eAQSQDoEDjD2TDYpphnOSXzOBFYFeJx0hWYReDxyBcmaIdQEBAQ X-IronPort-AV: E=Sophos;i="5.37,254,1488862800"; d="scan'208";a="6030964" 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; 26 Apr 2017 11:03:08 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3Aba+VpBUTjYRT8OoG8DMiRfCN/zHV8LGtZVwlr6E/?= =?us-ascii?q?grcLSJyIuqrYbBKDt8tkgFKBZ4jH8fUM07OQ6PG+HzBcqsnQ+Fk5M7V0Hycfjs?= =?us-ascii?q?sXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFRrwLxd6?= =?us-ascii?q?KfroEYDOkcu3y/qy+5rOaAlUmTaxe71/IRG3oAnLucQbjoRuJ6Q1xxDUvnZGZu?= =?us-ascii?q?NayH9yK1mOhRj8/MCw/JBi8yRUpf0s8tNLXLv5caolU7FWFSwqPG8p6sLlsxnD?= =?us-ascii?q?VhaP6WAHUmoKiBpIAhPK4w/8U5zsryb1rOt92C2dPc3rUbA5XCmp4ql3RBP0ji?= =?us-ascii?q?oMKjg0+3zVhMNtlqJWuBKvqQJizYDaY4+bM+Fzcr/Bcd4AWWZMRNpdWzBHD4ih?= =?us-ascii?q?b4UPFe0BPeNAoofguVQBtgGxBRKwBOPu1DBIgGL90LAn0+QgCgHGxwsgH9QTu3?= =?us-ascii?q?nTt9X6L7oSUeGuzKnTyjXDaela1irg54jOaR0hrvSMUqhxccrV00UgCwTFjlCJ?= =?us-ascii?q?pIHjIjib1fwNvnCZ4udvT+6jlnArpgFrrjWsyMogkIjEi4MNxl3K8Sh12ps5Kc?= =?us-ascii?q?CkREJhf9KoDIdcuzuHO4Z5RM4pXntmtzwgyrIcvJ62ZCgKx4ojxx7Yc/GHdpKH?= =?us-ascii?q?4hPnVOqIOTd4i25pdKuxhxuz8EWs0OL8Vs6z0FZFqipKjMPAuWwK1xzW8sSHS/?= =?us-ascii?q?198Vm92TuX1Q3e5ftILV0qmafbMZIswbA9moASvEnCBiP2nV/5jK6SdkUq4Oio?= =?us-ascii?q?7OHnb639ppCHKo90ixr+Mr8pmsy5G+g3LxUBX26A9OSz0b3s50z5QLFQgvIqla?= =?us-ascii?q?nZtYjWJd4Hqa6hHw9VzoEj5g6kDzi41NQYnH8HLE9KeR+ck4joO03BIPD/Dful?= =?us-ascii?q?hVSsiy1ky+rJPr3mHJXHNmLDn6v5fbZh905czxI+zctC6JJPEbwBPPLyVVPxtN?= =?us-ascii?q?zfFBM5NRe0zPz9BNVy0YMeRzHHPqjMNKLUrE/N/e8kPvONeJ5QvTHxNvwoz+Dh?= =?us-ascii?q?gGV/mlIHe6Stm5wNZzTwGvVgPlXcYnf2hNoFOXkFsxB4T+HwjlCGFzlJaDL6RK?= =?us-ascii?q?845zcmGKq6HIzDQcarm7XH0yClTbNMYWUTMV2GGGz0doiCE90RaTmJJckpxicO?= =?us-ascii?q?SLm6UIgnkx2isif1zrNmKqzf/ShO5sGr78R8++CGzUJ6zjdzFcnIi2w=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0G/AgBztQBZekJTfUpbHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBhReOcZlnjidDDoYWhCZXAQEBAQEBAQECAQIQAQEJCwwHKC+CMyA?= =?us-ascii?q?PRikvAQEBAQEBAQEBAR8CKyUBRxkBGxsCAQMSGlQRAQUBIxKKAgEDFAGddT+Nd?= =?us-ascii?q?BgFARyDCgWDZwoZJw1WgwkBAQggAgYJAQiEMoNujV4FkA6BA4w9kw2KaYZzkl8?= =?us-ascii?q?zgRWBXycdIVmEXg8cgXJmiHUBAQE?= X-IPAS-Result: =?us-ascii?q?A0G/AgBztQBZekJTfUpbHAEBBAEBCgEBFwEBBAEBCgEBhRe?= =?us-ascii?q?OcZlnjidDDoYWhCZXAQEBAQEBAQECAQIQAQEJCwwHKC+CMyAPRikvAQEBAQEBA?= =?us-ascii?q?QEBAR8CKyUBRxkBGxsCAQMSGlQRAQUBIxKKAgEDFAGddT+NdBgFARyDCgWDZwo?= =?us-ascii?q?ZJw1WgwkBAQggAgYJAQiEMoNujV4FkA6BA4w9kw2KaYZzkl8zgRWBXycdIVmEX?= =?us-ascii?q?g8cgXJmiHUBAQE?= X-IronPort-AV: E=Sophos;i="5.37,254,1488844800"; d="scan'208";a="5231662" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from mail-pg0-f66.google.com ([74.125.83.66]) by emsm-gh1-uea11.nsa.gov with ESMTP/TLS/AES128-GCM-SHA256; 26 Apr 2017 15:03:06 +0000 Received: by mail-pg0-f66.google.com with SMTP id t7so651168pgt.1; Wed, 26 Apr 2017 08:03:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=cHpYg309Bov1f9dhu3AUTTYTcE18FK8BGv5R4PTUfyk=; b=GimvV2d8P/gckE6geHNUddt7YUvKp0t5UeKJ8jbq202NHGCrZ+50hQ4JtDHl2c1PqW UVk6MlM14bkoJk7qV5+WkmERUvWMzQ96xHvMpJGrUgi17y3JgiCewerRXTg1Ou51tPLI Li30ilZ3VKN8XNJtFZoNM3sIRnOUfo3rYU0CcB5w4Oi5qzkKzp1bD/WrmIufQ18gMnb5 345swbESIAzIMIMZis/I0O2G2FkuhHNBifcA479en4RfWb/lLMznOrmQz+VwRPJQO30o woh8UcPYsfozfPV5hENcgjReDGTPxUdyS2pO7wNyg/7wXn1TG9s/bhRkQBH4g7jJ6XAm mcLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=cHpYg309Bov1f9dhu3AUTTYTcE18FK8BGv5R4PTUfyk=; b=pocWzOcfJ+C7uD7+cBGzgKRBHXHhJ6iceZgiJoj927P3LcZ1C6gRsvIPYC7yYkbXvY M9IRbt700wNFGW1OOOMUqBK3J8VFaJBiM+Fs2HX6Hv09oLHkQ4ei/1lclVLgAAUlsMPI Ue3EBmWEqupo9/Mib0OUJkYWkP3iAR0+Alb9F4VxT6Ux/8gFeRYiHgDPwyJ8dg5gYUgm gr01iLYagkIYBBfu+GjqJPgSGUNdnvFvbsgiy8GISLuNqHPEr4mgK4cs+ETxWNaeIQRL C29vhY4/JlLXEbdBWb6UEMCjSmD8IY4zacCOTzJFAGST6JvSWTS+RVaUhp/7clIb4o6U 2qCA== X-Gm-Message-State: AN3rC/5ovg39l7tlVbP1L7Lv64xUvuWBvQRdhekrLccEOHNIwi0oDAry hDg5EMgp69O0Vg== X-Received: by 10.84.217.205 with SMTP id d13mr314686plj.114.1493218985499; Wed, 26 Apr 2017 08:03:05 -0700 (PDT) Received: from ltest-vm7.localdomain (fs276ec80e.tkyc203.ap.nuro.jp. [39.110.200.14]) by smtp.gmail.com with ESMTPSA id 17sm756929pgg.48.2017.04.26.08.03.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 26 Apr 2017 08:03:04 -0700 (PDT) From: Sebastien Buisson X-Google-Original-From: Sebastien Buisson To: linux-security-module@vger.kernel.org, linux-kernel@vger.kernel.org, selinux@tycho.nsa.gov Subject: [PATCH 1/3] selinux: Implement LSM notification system Date: Thu, 27 Apr 2017 00:02:14 +0900 Message-Id: <1493218936-18522-1-git-send-email-sbuisson@ddn.com> X-Mailer: git-send-email 1.8.3.1 X-Mailman-Approved-At: Wed, 26 Apr 2017 11:23:22 -0400 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: Sebastien Buisson , james.l.morris@oracle.com, sds@tycho.nsa.gov Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP From: Daniel Jurgens Add a generic notification mechanism in the LSM. Interested consumers can register a callback with the LSM and security modules can produce events. Add a call to the notification mechanism from SELinux when the AVC cache changes. Signed-off-by: Daniel Jurgens Signed-off-by: Sebastien Buisson --- include/linux/security.h | 23 +++++++++++++++++++++++ security/security.c | 20 ++++++++++++++++++++ security/selinux/hooks.c | 12 ++++++++++++ 3 files changed, 55 insertions(+) diff --git a/include/linux/security.h b/include/linux/security.h index af675b5..73a9c93 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -68,6 +68,10 @@ struct user_namespace; struct timezone; +enum lsm_event { + LSM_POLICY_CHANGE, +}; + /* These functions are in security/commoncap.c */ extern int cap_capable(const struct cred *cred, struct user_namespace *ns, int cap, int audit); @@ -163,6 +167,10 @@ struct security_mnt_opts { int num_mnt_opts; }; +int call_lsm_notifier(enum lsm_event event, void *data); +int register_lsm_notifier(struct notifier_block *nb); +int unregister_lsm_notifier(struct notifier_block *nb); + static inline void security_init_mnt_opts(struct security_mnt_opts *opts) { opts->mnt_opts = NULL; @@ -381,6 +389,21 @@ int security_sem_semop(struct sem_array *sma, struct sembuf *sops, struct security_mnt_opts { }; +static inline int call_lsm_notifier(enum lsm_event event, void *data) +{ + return 0; +} + +static inline int register_lsm_notifier(struct notifier_block *nb) +{ + return 0; +} + +static inline int unregister_lsm_notifier(struct notifier_block *nb) +{ + return 0; +} + static inline void security_init_mnt_opts(struct security_mnt_opts *opts) { } diff --git a/security/security.c b/security/security.c index b9fea39..ef9d9e1 100644 --- a/security/security.c +++ b/security/security.c @@ -32,6 +32,8 @@ /* Maximum number of letters for an LSM name string */ #define SECURITY_NAME_MAX 10 +static ATOMIC_NOTIFIER_HEAD(lsm_notifier_chain); + struct security_hook_heads security_hook_heads __lsm_ro_after_init; char *lsm_names; /* Boot-time LSM user choice */ @@ -146,6 +148,24 @@ void __init security_add_hooks(struct security_hook_list *hooks, int count, panic("%s - Cannot get early memory.\n", __func__); } +int call_lsm_notifier(enum lsm_event event, void *data) +{ + return atomic_notifier_call_chain(&lsm_notifier_chain, event, data); +} +EXPORT_SYMBOL(call_lsm_notifier); + +int register_lsm_notifier(struct notifier_block *nb) +{ + return atomic_notifier_chain_register(&lsm_notifier_chain, nb); +} +EXPORT_SYMBOL(register_lsm_notifier); + +int unregister_lsm_notifier(struct notifier_block *nb) +{ + return atomic_notifier_chain_unregister(&lsm_notifier_chain, nb); +} +EXPORT_SYMBOL(unregister_lsm_notifier); + /* * Hook list operation macros. * diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index e67a526..a4d36f8 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -171,6 +171,14 @@ static int selinux_netcache_avc_callback(u32 event) return 0; } +static int selinux_lsm_notifier_avc_callback(u32 event) +{ + if (event == AVC_CALLBACK_RESET) + call_lsm_notifier(LSM_POLICY_CHANGE, NULL); + + return 0; +} + /* * initialise the security for the init task */ @@ -6379,6 +6387,10 @@ static __init int selinux_init(void) if (avc_add_callback(selinux_netcache_avc_callback, AVC_CALLBACK_RESET)) panic("SELinux: Unable to register AVC netcache callback\n"); + if (avc_add_callback(selinux_lsm_notifier_avc_callback, + AVC_CALLBACK_RESET)) + panic("SELinux: Unable to register AVC LSM notifier callback\n"); + if (selinux_enforcing) printk(KERN_DEBUG "SELinux: Starting in enforcing mode\n"); else