From patchwork Sat Jan 14 13:12:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Iooss X-Patchwork-Id: 9517039 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 8B476601DA for ; Sat, 14 Jan 2017 13:14:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7F39B28542 for ; Sat, 14 Jan 2017 13:14:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 72FE628552; Sat, 14 Jan 2017 13:14:03 +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 (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 7817928542 for ; Sat, 14 Jan 2017 13:14:02 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.33,227,1477958400"; d="scan'208";a="2296167" IronPort-PHdr: =?us-ascii?q?9a23=3AsE+VZhd/Dp7bdxnwaqLVH/QslGMj4u6mDksu8pMi?= =?us-ascii?q?zoh2WeGdxcq4YxeN2/xhgRfzUJnB7Loc0qyN4vymAjdLuMbb+Fk5M7V0Hycfjs?= =?us-ascii?q?sXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFRrwLxd6?= =?us-ascii?q?KfroEYDOkcu3y/qy+5rOaAlUmTaxe71/IRG5oAnLuMQbj4RuJrsyxxfXv3BFZ/?= =?us-ascii?q?lYyWR0KFyJgh3y/N2w/Jlt8yRRv/Iu6ctNWrjkcqo7ULJVEi0oP3g668P3uxbD?= =?us-ascii?q?SxCP5mYHXWUNjhVIGQnF4wrkUZr3ryD3q/By2CiePc3xULA0RTGv5LplRRP0lC?= =?us-ascii?q?sKMSMy/2/Nisx0kalVvhSvqRJiyILQeY2ZKeZycqbbcNgHR2ROQ9xRWjRBDI2i?= =?us-ascii?q?coUBAekPM+FAr4T/ulcDoxSxChWjCuzx0T9FnWP20K8g3ug9CwzKwBIsEtQTu3?= =?us-ascii?q?rUttX1M6ISXPitwqnJ0TrDaPdW1i3m6IPVcR4hpvaMXalrccHMzkQvEQLFgUmX?= =?us-ascii?q?qYzhJTyVzf4Bs2mc7+pnTuKvkHUqqwR+rzmg3MssjZPJho0Mx13C6C53w541KM?= =?us-ascii?q?WlREN0btOoCptduzyAO4doTc4uXXtktDsixrAEu5O3ZjUGxZopyhLFdfCLb4mF?= =?us-ascii?q?7gjtWeqPJzpzmWhrd6ilhxmo9Eit0uj8Vs6p31lUtidFidzMtmwV1xzU98iHVu?= =?us-ascii?q?Nx/ke/1jaL0ADe8v1ELloularaNp4h2aQ8loYTsEvfHi/2n1/6jKmKeUU/5uek?= =?us-ascii?q?8eHnYrTippOENo90jB/xMrg2l8CiDuk1PRICUmiG9eimyrHu8lP1TK9XgvEul6?= =?us-ascii?q?nWqpHaJcAVpq6jBA9V154u6w2hADei0dQYm2QHLV1cdB2ciIjpJlfOL+zmAvek?= =?us-ascii?q?mFmsjDdqyOzGPr3mGJnNKGPDn637cbZy7E5c1hI/zcpD6JJMFrEBPPXzV1fztN?= =?us-ascii?q?zfCB82KRC0w+b9B9V7zY4eW2WPAqmcMKzIql+I+vwgI/OXZIMPvzb9Mfcl7eb0?= =?us-ascii?q?jXAlgV8dYbWp3ZwPZXC6HPRpOVmWYXn3gtcGF2cKvxQ+QffkiF2GTD5SaG29X7?= =?us-ascii?q?865jEnFYKqF4DDRpqigLaZxie0AoVWZnxaClCLCXrob5uLVOwSZyKUI89hjjsE?= =?us-ascii?q?WKOgS4A/yx6hqhX2y719Lurb4icYr47s1MBp5+3PkhE/7SF7D8Ob02GLUm57gG?= =?us-ascii?q?cIRz4t0a9lv0N90FCD3bJ/g/xCGtxZ/+lJXRsiNZ7A0+x6DMj/VR/dftiTUlar?= =?us-ascii?q?WcmpATY0Tt0t2dAOeFp9F8+kjh/dwyqgG6UVmKCTBJwo7qLc2GD8J8d7y3bayq?= =?us-ascii?q?Yhi0cpQs5ROm26nK5+9xPeB4nRk0qHkaaqcL4T3C/J9GiYymqPs1tUUAlqUaXK?= =?us-ascii?q?RXoffFfZrczl5kPeSL+jEbQmMwpGyc6EMaZKb9npgUxHRPflItjeZXi+m32zBR?= =?us-ascii?q?aJ2LODcpDme2MD0yXBEEIEiRwc/W6aNQgiASesu3zRDCR0GlL1YkPs6vJzqGuh?= =?us-ascii?q?QU8uzgGKdFVh176v9REJm/OQUfQT3qgLuC05sTV7AE69387KC9qHvwdgcqRcYd?= =?us-ascii?q?c44FhZz2LUrAJ9MYK9IKBlnF4RaRx3v1np1xV1FIpPjdQqoGktzApoJqKSyElB?= =?us-ascii?q?eC+A3ZDsJr3XLXH//B61a6HM3FHRzNeW+rwU5fQ9s1XjvRilFlEs8nV8ydVV1G?= =?us-ascii?q?Gc5prSBgoITZ3xSlo39wR9p7zCYSky/YDU1XpxMaSvsT/NwdEpBOw4yhq6eNdf?= =?us-ascii?q?KqyEHhfoE8IGH8iuNPAqm1+xYx0eIe9S7q80MN28d/adwqGkIONgkCihjWRd74?= =?us-ascii?q?B3yliM+DZkSu7Uw5YFxOmV0RedWDf4klihqdz3mIBDZTwJBWqw1SnkC5BXZq1u?= =?us-ascii?q?fIYEE32iI8upydVin5TtQWJX9Ea/B1Ma38+kYRqSYEL53Q1U0kQauninmTakzz?= =?us-ascii?q?xzljEmtLCT3CvUw+TtbBAHIHJERHF+jVfwJoi5l8saXEaybwgujxul+V33x7Nd?= =?us-ascii?q?pKR4IWjTRF1Hfy7sI2FkTKSwqqKIY9RT55MwrSVXTOO8bEiUS7Hnpxsazz3sH3?= =?us-ascii?q?FFxD0gaTGlpI/5kAdniGKYNnpzq2DZec5ozxfF+NPcXeJR3iYBRCRglTnYG0Wz?= =?us-ascii?q?P9iz8tWQjJrMrue+V2e9WZJJainr0ZmMtC2l6m12GRe/hey8msX7EQgm1i/2z9?= =?us-ascii?q?9qVSTMrBb4fIbrzL+3Pvh5cUlyA1/w8c16GptxkoEonpEfxWAahomJ/XoAiWrz?= =?us-ascii?q?L9Rb1r7ibHoKXz4H2cLa4Aji2E1lIXKE3Ib5VnSbwsR7fdm6ZXka2iUn78BFEK?= =?us-ascii?q?2U9qBLnTNpolqkqgLcefx9njYGyfsy8XIamP8GuA4sziWbH7ATElJVPTf0lxSJ?= =?us-ascii?q?6dC+rblYZH21fbi2ykV+gcirDKuerQFERHb5ZpAiEDdq7sV4NFLM1GP86pv4d9?= =?us-ascii?q?nXY9MerQaUkwrcgOhOMp4xkeAKhSV/M2LnoXIl0/I7jQBp3ZyipIiIMXht/Kaj?= =?us-ascii?q?DhFCLDH6fMQT+jXxjaZZmMabxIWvEolnGjUMQJTkV/SoHywOtf7/LQaBDCU8qm?= =?us-ascii?q?uHGbrYBQKf61lpr3TUE52wNHGYOn8Zzc5kRBaDOExTmgcUXC81npQhDACl2NTh?= =?us-ascii?q?cFtl5jAW/lP4sgFDyv9sNxbhSmfQvgGoaisqR5iFNxdW8xpC6FnPMcyF9O5zBC?= =?us-ascii?q?ZY/oC7rAORNGObaQNIDXsGWkOaHVzjOKeh5cXY+eiCGuW+N+fOYamJqeFGSfeI?= =?us-ascii?q?w4+g35B4/zaKK8qPPmNuD/sl1UpfRXp5AdjWmy0TSywLkCLAd9abqw2h+i1ztc?= =?us-ascii?q?2w7PXrWB7v5IeWBbtdK9Nv9wqxgaeZOO6anDx5JipA1pMQ2X/Iz6AS3F0SiiFq?= =?us-ascii?q?aTagCrEAtSnDTKLehKBXEwIbayN0NMtN8a0wxA9NNtDHitntzL53kuY1C0tZVV?= =?us-ascii?q?zmgsypa9YFI2ehNFPAAUaGL7qGKiPWzMHwe6OzU6VQjP9Ttx2ypzmUD1PjMi6E?= =?us-ascii?q?lznzWBClKftMgz2DPBxCpIG9dQ5gBnXlTN38cRC0Ldl3gicszb0znHPKOnYWMS?= =?us-ascii?q?JgfENVsr2Q8SRYj+1lG2Bb4HtpN+yElDyd7+nfKpcbquFkDThxl+5A53Q60bRV?= =?us-ascii?q?5jleRPNpgCvSssJuo1a+n+mJ0DpoSgJOqi5QiYKFvEViI77Z9oVOWXbF+hIC92?= =?us-ascii?q?OQBAgLp9R/Dt3joadQysLAlKjrMjdN78rU/dcAB8jTMM+ILWEhPgTzFz7bFgsK?= =?us-ascii?q?VyCrOHrEh0NHk/GS62eVoYIgppjohZoOTKVUVEYsGvMGDURlH9wDIJBtUjMij7?= =?us-ascii?q?GbkNYC5WCioxnJWMVaopfHW+qJDvXuJzaZir9EagAVzrzmNosTN5f020p4Zll9?= =?us-ascii?q?hoTKFFLaXcpRrS15cg80vEJN/WBkQW08wU3ldB2i7WQUFf6sgBE2jA5+bv4s9D?= =?us-ascii?q?fo+Fg3IVXLqDE3kEkrltXvmSqRfyLpLKesQYFWDDL5t1Q2MpP+WQp1dwqynE16?= =?us-ascii?q?OzfCXL1Rlbxgen5oiALHpZRPHvtcQrFebx8L2fGbffMo3kpAqi+/309I+fPFCY?= =?us-ascii?q?d+lAstaZOsqWxP1BhnbNMuJqzQI7FJzkRKiaKIpS+o1eExzBUYJ0kT7GOYYDQI?= =?us-ascii?q?t1AQNrk6Oyqo+fRh6RaclDtYZmcDTeAqre5q9k4mIOuAzjjg3KNEKkC/L+yfNb?= =?us-ascii?q?2Wumjamc6OXFwwylsCl1NZ8rhuzccjb02UWlgyw7SLCRQJNNfNKRpOYsVI7njT?= =?us-ascii?q?ZyGOsOvWwZ1rI4q9C/roTe6StKcUmE6kGhgmH5gU5MQbApasyF3YLdvgLLMdxx?= =?us-ascii?q?Ut/hrkK0ieDPtTfhKLjDAHo9qkwZBtwYZdIysRAWJnMSW4/rzXvBMlgOKfXNcq?= =?us-ascii?q?ZXcXRo8ENnUsWMKknS5YvnNAASK40uIf1QiO9Tj8pj7fDDPkddpseO+UZQ9wCN?= =?us-ascii?q?Gx4Tg/6La5iVrW8pXYOmH7Os9vtcPI6eMfu5mIEehUTaVnv0fahYZYW2SgU3TT?= =?us-ascii?q?Ht6tO5jwd44sYMTpBXmmV1y/jDQ1T9vsMNu2MKiHnxvoRYdVsYmc2jAvL8m9GS?= =?us-ascii?q?8CGx1oveEM+Lp8ZREfY5o8eRPotB4+NqylLweeztWuQ32gKTRRT/lH0eq2fbpX?= =?us-ascii?q?wDQwbuWi0nsvUok6z/Wr8U4KXJwKkhDexfOkZ4lCUSjyGmdQdBjOpSs5jWduLf?= =?us-ascii?q?w+wuEhzxPUqVMcKSyEdPR1aGxYuNExHVySIW9sBWo+W1+RlovD4gmi3rAU4ytd?= =?us-ascii?q?n8hb0exDsHjioJDfeiigWKq1ppXJqyAgd8Qpo7VtMYz/JcuLrInRnjjeTJbMrA?= =?us-ascii?q?KKSCu6FvpcmthXJiJXWuJFlnokOcMcv4pN8EQxVtokK7xJFqYsuqigaSB4Ai4K?= =?us-ascii?q?0S8ZS4SA0SQZjeii3bvXjQ2ff4k8MBMaqpVCmcESUzR2Yy8Eo6+jTYrWnXeeSm?= =?us-ascii?q?cXOAcT8RhM5AUYm49qeODl4ZbHTJ9Lyz5SuPJ6SjLFGIRy+VbnTW+bmkT3SPKk?= =?us-ascii?q?k+O1xw1S1+7s3sMdWBFhFUhX3/xWmVcwKLFrN6kQuZbHvSOKdUzgoG3g0/epJF?= =?us-ascii?q?5Vyc3Qdl33EpDFtXbiXSIA+X0YX4hPyGvQFZ4KiQp2dL4rpElQIIChYkv+/SYr?= =?us-ascii?q?x55uH7ajTs2r20wlomwYRyi0F9pBCudmsF3TWD1kbJCrqInlO5tITW9K/Z2RsV?= =?us-ascii?q?FZn1txMySh05pTN9lN4iIQXDhIuTicssG+R9FD2c93Cp8MI81wu3TmFaNFJpee?= =?us-ascii?q?vWM5tqboyn/D9DA2qE26yymrG6+kU+JZ+HUTGh0uJ2SasEYvFeUt8mDW8lDDqV?= =?us-ascii?q?10+uBbBr+UjUpvvDl9BJdOBi1S1XCkKVRzQ2NKs+JAKKTaa8ZcWeU9ZQezOxwi?= =?us-ascii?q?Ev4rx1aG/VtpnXf/eSBytRBX+yHcXwk1SSkama3hmTsApcG7ITUaUY5HbS09by?= =?us-ascii?q?fZLAKWgTxXvBFaa0xxR5AVHtNF9KoB0YtS4MXCVV6mKTsZUxx6KgI4zf1fmFZD?= =?us-ascii?q?sEqCYyDSFw6oeuvUvxJqY8iRtNapI+r9/AhZkIPrquc4978MR3e+gw2iXcjer5?= =?us-ascii?q?Pgtt2NrkaOdqD4PPOnbHDcUjfMlg6/ha04D5bU4iffKgxbJIdmyXA8e5juFXbL?= =?us-ascii?q?PQhaJ6IcP0dUTq56Zslaru1YesNpdr0E9rNqBhKCWhzgApevrOVcIlbVWzveMz?= =?us-ascii?q?2L8vajroLL8bzdVe/ga9SWx3nZXq13Po116SXgFrfu1o9e5FT51ulx+UN9VFfJ?= =?us-ascii?q?LTqNrNL/KQMX/MOibFftvoU1HTPKB5d9iGLtxlpcd8UNXiKq7I8VyIhe6HbtU+?= =?us-ascii?q?J3zlb8sOtO97l+84Y356plycCuJafdMf5aq1NoAgCIBgV28ZUgGHR/R3pPbeAP?= =?us-ascii?q?NfjcZrkZjcTyq+DtDaMX9hyV++tdadTZO0HNgM6/CiuTSRZchgcOtSYaLheA1/?= =?us-ascii?q?6Cg6J0TNyqpez92k0z/1i+MgQJw6p26IeC5KWIuPTXYAfLwrgcRKfmXMXzoaow?= =?us-ascii?q?u0mK//0riKYOenBpYw2gCOUdVNQSxn3nzaAxySIjCd3DEqnl+P5eU3I5gjPglI?= =?us-ascii?q?x8H1oMHPMUBqCH/YNEnmc3g+bZLMEZcrhemmaTEh6pCr0CxmSt6yuZOmllhQzB?= =?us-ascii?q?3A/rTGOv9lD2qzR4QSzWw9fljEVVSqG9BV1OUCqxJU94rDSPMRLntNrquKQ16E?= =?us-ascii?q?U2PXLhtN+WiWSuJqhYH8zlK9yaOyU0o0gXjJIpTNy1xY8bAca9IMsW8HxmaPve?= =?us-ascii?q?73imky5Ho6dCnYbe48eV+vvNHXa6lK2at6+NxC1ExXgkoFE/8M6vOuvJ592QTP?= =?us-ascii?q?Siz3wRQDtnuwvdQx61raTWr1UTOUyNzEfLl5IFM8pc3Xk5zE7m4vYsQM499QVZ?= =?us-ascii?q?DIbAZOgCqSr1ODTq3VaVe8g3WTWG0ztLAlL1FkF1GLIh123tp8/JmnLQ+lIySo?= =?us-ascii?q?l2aUPnmQR9D58kJkI19FgX3i0DHBAJaRCACbGlBV/oLYUaWkcebhSHxqK1er8t?= =?us-ascii?q?3U10wLOg+vPcbfBmC6oKLPZdgRaEnEJHFZIOra0eXLV8dkdG9KHNuAjtEYfnUO?= =?us-ascii?q?b9lXcrLv26WN5a/toWt3Q8+QazXRyg5olf77wDkpCHarZEYYTQvMB790pn5z8P?= =?us-ascii?q?dilWjRh6kRy4Uf4TpPri4tjdv5qk8OCuW7gxR+8P7Rg7G3x+j4fsgFAkudzX1u?= =?us-ascii?q?ZdRZfPhovj6w1NOGCFuJrE3BZgM+YOLJirfLl4/XUdOyceP24OPcaRa/Qk+CBt?= =?us-ascii?q?MS7T5lJYDcMOZNMYINLNlhpJik3tQ7xc6s3bFUKGBIhpasAo9W33yCov/pcmVe?= =?us-ascii?q?bg8jC2L4jF715RJ/NDkDlslNXaqegN2/XSFDQY4XmXahhy2COCyICBC+3u8uWI?= =?us-ascii?q?ydHUUU4GHyEtXodFPjWC5RCoRuq7lZXuSAOU6dX/gJEge0KKQHy+gqAFvrxLEe?= =?us-ascii?q?5ahSXxxiJeGZzth/KJr9qs73NatkFdEIlt6R3KAqNfMYtgNBvll8mrSUl8Bjfl?= =?us-ascii?q?d8HPbBUuoveWyv0K4+pgK0v0fZUbLQ4cy7Lm9XpVSRNjSLHssVaDQ+0ReNtmRe?= =?us-ascii?q?jArnBU9YJvNa8PM0KApJzxtDtIrk45ABMxYr8qsjNablXOnBFSW6vst74PlA0c?= =?us-ascii?q?UcJ+uU9LHm6wI3wx5z7GVaRTkamQB+cY8jGNQawUU0RnKDlyQxWr15VyY7Gph+?= =?us-ascii?q?xIsntaniNhp/gnyzpmRBqgti3ro6ICwykg9Ku5tDUGvnxFVf6enjzNCVhMw/UG?= =?us-ascii?q?l6AcC2zt6VakenkMcJPy4KV7JcTn7YQh7GgwYQ44fyEfQOquBCf+j6KOAoySv9?= =?us-ascii?q?NRnxGNuMDUYr+1MyceLLM9yQjsR3JlyAjRgA5o8HcXQjWn9NIkJoK9OcYjxiay?= =?us-ascii?q?BWfbdFIM4r5Uv8rwtF4LSvA2aVBgwGh4zMiHRzMNS9bLG2kojwgoc2NEf4xf6R?= =?us-ascii?q?UCDaknni6IvrVa/gETeDrUE5ql9ZPWncrT3Xk9UMplxmPRpq2enJ8q12dlm9xs?= =?us-ascii?q?5C6UpHsSb/DYU9NrAnXr1IdQ1+L+Z/upsu0cRopp0rKhX+EeMsW5/2u5xolqUF?= =?us-ascii?q?e/xrsCB1q5LPMDxrDDXieqTW2YXuqKfHaInzY9KUPy/h6oLls2aMhWtUM9NPXN?= =?us-ascii?q?hoJEnQ37Tbx0XjmQpUPczGE7M+MadwI3uJ+gewwOTe4Re/aTKPMrwP0/FFsMdW?= =?us-ascii?q?HGETFxC++svl6nhJJ7NGl44UXmfeTt9RjrMMeTGhkBCoPasp9x9uC5Rm2fPX9s?= =?us-ascii?q?1htyM1do9+3HDVQ+qvdcc4qNndjXn9l71O8Fd/RuMS06odMTmJhs6YqT0MeMbx?= =?us-ascii?q?7RyIz+JdfLrfiEG/ff1VglenlGUroFZgP4/541McA/W73PBrZZphAcBa8mQJw9?= =?us-ascii?q?KWf+6rx7IBl0cg7La7S+mtPqqf6TZptIu3/W6Uo9LCnCtB0Hy/y0VRJ0Yourhn?= =?us-ascii?q?XzJZAwQyxOr8dpChR4BodPHNkArwW/CZ6OhK67k8Ox+199u+ISv6vwEurK1NWl?= =?us-ascii?q?0IpvRJVa4E2LPCrLBKZ1mEhlif6ygvjY2JnrFcziYc8EVPR8QmPdbb/GGpuwJy?= =?us-ascii?q?mWOsL4YUFG6KKc0LNlXRWNfiD2QbSJuDeiNPp6/UUx0pZ4c/bLzDwx87Hb38P/?= =?us-ascii?q?Z2VapielsH6IO4JT7FjLBezFQxJUUuGI8Gd/Eq0Raov47uAOMcYtwNKE+Ql88C?= =?us-ascii?q?xC0NeZI6imtkLMwVx0dZbaLEvvxiY4Vo4GLhujMUssn2DZsGrSAWxGIcW/Ksli?= =?us-ascii?q?nsyVDhrz6El1gm4te2FBFnDvRdeLNmgRw9i+axGS9AJXE9YDmPa6eUsiuaKuSe?= =?us-ascii?q?loO5NFmeKxubUZkNZpLT/ARMxbPyHWMb93MSBdDuLVpFgnehQEqaQ6Wp8pZZiS?= =?us-ascii?q?J0MKKEWAxjnxzQvFykL5bMGs1KCVICYW9XVH0r3F0ThQpwWjv/aWnNHjWqjDbJ?= =?us-ascii?q?7qRP7SLDYlVjaCSDspCkml/lOku/sfvPqEOmcTuEsUbTyOBwIJvaBgs9zQDm7V?= =?us-ascii?q?me1+c5wHn+yVWiDqSC1lj6o+HChKulqQQ/oYEgnWaWXtgG1GuAytPvVM527qb6?= =?us-ascii?q?WExqpJXOwbGoRMfeeCTNvCePBROTMomy4HOOa4ZdLctLc50k/SQWsfDabI6EWU?= =?us-ascii?q?TFSKTfyE2zLrQYIVspA2uiot/dLQhDV3E6XTP7uEoT6h6Iu4gziZueHEUWkteU?= =?us-ascii?q?M1ivoYAGad2BlANH0EC9YNtUH2TK6AYlpD2XMqhO91xR8DZh5zUnxv031Rmvax?= =?us-ascii?q?AMtZRkAIjGm2Wv0JcEh3DC8s/U+N+gDyY9sAucbXR2JF87sDV5cSLPcv6InNJK?= =?us-ascii?q?Qf3uwl3DR4rywm4G2hCAZGgwaE9bfANL5tzb1Fo28j9rd5WV/cbSnYdz3hy4Gh?= =?us-ascii?q?D8tUjQZppmv/n57Sv+tqMLJB4YB+B0wRKScqNpba5z8XAjK84xe7oxvuRGfWGz?= =?us-ascii?q?ke+jteYHVdew=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2HVBADCI3pY/wHyM5BeHAEBBAEBCgEBFwEBBAEBCgEBgw4?= =?us-ascii?q?BAQEBAR+BaI5KqFImiB1XAQEBAQEBAQECAQJgKIIzG4IjAiQTFCAOAwkCFykIC?= =?us-ascii?q?AMBLRUfCwUYBIhiBAGyTTomAoNohjKGRYkBEQGGAAWbOoF7h3mHXopThieSbFh?= =?us-ascii?q?PIiQSKkKEa4FIcoZsgi4BAQE?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 14 Jan 2017 13:14:01 +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 v0EDDjSD013730; Sat, 14 Jan 2017 08:13:48 -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 v0EDDgVi210376 for ; Sat, 14 Jan 2017 08:13:42 -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 v0EDDgCl013728 for ; Sat, 14 Jan 2017 08:13:42 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1AsAgCsI3pYhyIeaIFeHQEFAQsBgzkBAQEBAYIHjkqkP4Q0iCJXAQIBAQEBAQITAQEBCgsJCh2FR4IjiQMEAaBhkWw6hBCGMoZFjxMFmzqBe4d5h16QepJsgSZGEiqEKgELAXaBSHKJGgEBAQ X-IPAS-Result: A1AsAgCsI3pYhyIeaIFeHQEFAQsBgzkBAQEBAYIHjkqkP4Q0iCJXAQIBAQEBAQITAQEBCgsJCh2FR4IjiQMEAaBhkWw6hBCGMoZFjxMFmzqBe4d5h16QepJsgSZGEiqEKgELAXaBSHKJGgEBAQ X-IronPort-AV: E=Sophos;i="5.33,227,1477972800"; d="scan'208";a="5907217" 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; 14 Jan 2017 08:13:42 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3ADu1vzx1gSJh4ZAK6smDT+DRfVm0co7zxezQtwd8Z?= =?us-ascii?q?se0eI/ad9pjvdHbS+e9qxAeQG96Kt7Qf0KGP7PGocFdDyK7JiGoFfp1IWk1Nou?= =?us-ascii?q?QttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZr?= =?us-ascii?q?KeTpAI7SiNm82/yv95HJbQhFgDWwbal8IRi4ogndq8sbjI9/Iast1xXFpWdFdf?= =?us-ascii?q?5Lzm1yP1KTmBj85sa0/JF99ilbpuws+c1dX6jkZqo0VbNXAigoPGAz/83rqALM?= =?us-ascii?q?TRCT6XsGU2UZiQRHDg7Y5xznRJjxsy/6tu1g2CmGOMD9UL45VSi+46ptVRTljj?= =?us-ascii?q?oMOTwk/2HNksF+jLxVrg+vqRJ8xIDZe52ZOOZkc6/BZ94WWXZNU8BMXCJBGIO8?= =?us-ascii?q?aI4PAvIZM+ZZs4b9oF8OogGlBQKxB+3vzThIhmTt3aYn1OkhFwDG0xAnH9IKqn?= =?us-ascii?q?vUt8/5NKYVUeCy16nI1i7Ob/ZZ1Dby8oTIdQohof6VUL92bMHfylEvGhvYglmO?= =?us-ascii?q?rYHpJS6Z2vgCvmSB4edsSfijhmAopg1poDWixN0ghpTHi48b0FzI6zl1zYcvKd?= =?us-ascii?q?C2VkJ2Z8OvHoFKuCGALYR2R9svQ2F2tyY+zb0LoZu7fScXxJg93x7fbPiHcoiU?= =?us-ascii?q?4h39SOmRITF4hHN8eLKimRm+60+gyvfzVsWs0VZKqDRKksXUu3wQyRDe7tKLRu?= =?us-ascii?q?Zh8kquwzqC2Rzf5vtKLE07jabbLoQuwr80lpodq0TDGSr2lV3rgqGKa0so5vCl?= =?us-ascii?q?5Ob6bLv9p5+RL417hw7mP6QrlcG+Dv40Mg8UX2iU4em80rzj8lH+QLVOlPI2ib?= =?us-ascii?q?PVsJHdJcQcva65GBRY3Z0k6xaiCTepzMoXnWIdIFJAdx+GgJLlO1bUIPD3Ffu/?= =?us-ascii?q?mUijkC93x/DaOb3sGo7NIWbHkLfge7Z99kFdxREvzdFf+51UCrYBLOj1Wk/qrt?= =?us-ascii?q?PUFBA5Mwuqw7WvNNIozY4aWGSSEoeFIajSthmO/etpLO6SN6EPvzOoDfku4Prn?= =?us-ascii?q?ljcYnlgGZuH925ocb3SxBbJnJEKCelLp3sdHFn0F6FltBNf2gUGPBGYAL025WL?= =?us-ascii?q?gxs2k2?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0ErAwDCI3pYhyIeaIFeHQEFAQsBGAEFA?= =?us-ascii?q?QsBgw4BAQEBAYIHjkqkP4Q0iCJXAQEBAQEBAQECAQIQAQEBCgsJCh0wgjMZgku?= =?us-ascii?q?CI4kDBAGgYZFsOoQQhjKGRY8TBZs6gXuHeYdekHqSbIEnRhIqhCoBCwF2gUhyi?= =?us-ascii?q?RoBAQE?= X-IPAS-Result: =?us-ascii?q?A0ErAwDCI3pYhyIeaIFeHQEFAQsBGAEFAQsBgw4BAQEBAYI?= =?us-ascii?q?HjkqkP4Q0iCJXAQEBAQEBAQECAQIQAQEBCgsJCh0wgjMZgkuCI4kDBAGgYZFsO?= =?us-ascii?q?oQQhjKGRY8TBZs6gXuHeYdekHqSbIEnRhIqhCoBCwF2gUhyiRoBAQE?= X-IronPort-AV: E=Sophos;i="5.33,227,1477958400"; d="scan'208";a="2823834" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from mx1.polytechnique.org ([129.104.30.34]) by emsm-gh1-uea10.nsa.gov with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Jan 2017 13:13:32 +0000 Received: from localhost.localdomain (32.206.133.77.rev.sfr.net [77.133.206.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id 417625646E3 for ; Sat, 14 Jan 2017 14:13:30 +0100 (CET) From: Nicolas Iooss To: selinux@tycho.nsa.gov Subject: [PATCH 1/1] checkpolicy: do not leak memory when declaring a type which has been required Date: Sat, 14 Jan 2017 14:12:55 +0100 Message-Id: <20170114131255.17598-1-nicolas.iooss@m4x.org> X-Mailer: git-send-email 2.11.0 X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Sat Jan 14 14:13:30 2017 +0100 (CET)) X-Org-Mail: nicolas.iooss.2010@polytechnique.org 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 This kind of strange construction is currently accepted by checkmodule but it makes memory to be leaked in declare_type(): optional { require { type TYPE1; } } optional { require { attribute ATTR; } type TYPE1, ATTR; } Moreover reversing the order of these two optional blocks leads to an (expected) error: ERROR 'duplicate declaration of type/attribute' at token 'TYPE1' on line 14: require { type TYPE1; } Make checkmodule fails with an error when encourntering the first construction. Moreover the construction below also makes memory to be leaked: optional { require { type TYPE2; attribute ATTR; } typeattribute TYPE2 ATTR; } type TYPE2; This example is valid and is used by several refpolicy modules. In declare_type(), declare_symbol() returns 1, stack_top->parent is NULL and the scope of TYPE2 has been updated when declare_symbol() called symtab_insert(). When these conditions are met, declare_type() should return the currently existing type in the policy database. Signed-off-by: Nicolas Iooss --- I have tested this patch both with "make test" and by compiling the current master branch of refpolicy. I have not tested it to build any Android policy. checkpolicy/module_compiler.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/checkpolicy/module_compiler.c b/checkpolicy/module_compiler.c index 6e5483c17540..04d09d1445a3 100644 --- a/checkpolicy/module_compiler.c +++ b/checkpolicy/module_compiler.c @@ -308,7 +308,7 @@ role_datum_t *declare_role(unsigned char isattr) type_datum_t *declare_type(unsigned char primary, unsigned char isattr) { char *id; - type_datum_t *typdatum; + type_datum_t *typdatum, *old_datum; int retval; uint32_t value = 0; @@ -335,10 +335,37 @@ type_datum_t *declare_type(unsigned char primary, unsigned char isattr) typdatum->flavor = isattr ? TYPE_ATTRIB : TYPE_TYPE; retval = declare_symbol(SYM_TYPES, id, typdatum, &value, &value); - if (retval == 0 || retval == 1) { + if (retval == 0) { if (typdatum->primary) { typdatum->s.value = value; } + } else if (retval == 1) { + /* the type has been previously marked as required */ + assert(stack_top->type == 1); + if (stack_top->parent == NULL) { + /* in global scope, the type has previously been required and is now declared. + * policydbp->scope[SYM_TYPES] has been updated by declare_symbol() */ + old_datum = (type_datum_t *) hashtab_search(policydbp->p_types.table, id); + + /* check that previous symbol has the same type/attribute-ness */ + if (typdatum->flavor == old_datum->flavor) { + type_datum_destroy(typdatum); + free(typdatum); + typdatum = old_datum; + } else { + yyerror("declaration of type/attribute with an unexpected flavor"); + type_datum_destroy(typdatum); + free(typdatum); + typdatum = NULL; + } + free(id); + } else { + yyerror("declaration of type/attribute after it has been required"); + free(id); + type_datum_destroy(typdatum); + free(typdatum); + return NULL; + } } else { /* error occurred (can't have duplicate type declarations) */ free(id);