From patchwork Wed Apr 12 18:26:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Carter X-Patchwork-Id: 9678189 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 8321B60382 for ; Wed, 12 Apr 2017 18:27:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 79363252D5 for ; Wed, 12 Apr 2017 18:27:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6DB1127317; Wed, 12 Apr 2017 18:27:08 +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 (emsm-gh1-uea11.nsa.gov [8.44.101.9]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AF23F252D5 for ; Wed, 12 Apr 2017 18:27:07 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.37,191,1488844800"; d="scan'208";a="4841502" IronPort-PHdr: =?us-ascii?q?9a23=3AnXlu3BSsS6pUxVBc9R0ZjwON1dpsv+yvbD5Q0YIu?= =?us-ascii?q?jvd0So/mwa68ZR2Ct8tkgFKBZ4jH8fUM07OQ6PG+HzVeqsbe+Fk5M7V0Hycfjs?= =?us-ascii?q?sXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFRrwLxd6?= =?us-ascii?q?KfroEYDOkcu3y/qy+5rOaAlUmTaxe71/IRG3oAnLq8UbgIRuJ6UzxxDUvnZGZu?= =?us-ascii?q?NayH9yK1mOhRj8/MCw/JBi8yRUpf0s8tNLXLv5caolU7FWFSwqPG8p6sLlsxnD?= =?us-ascii?q?VhaP6WAHUmoKiBpIAhPK4w/8U5zsryb1rOt92C2dPc3rUbA5XCmp4ql3RBP0ji?= =?us-ascii?q?oMKjA28HvTisdtkqxVphyvrAF7z4LNfo2ZKP9yc6XAdt0YWGVBRN5cWSxfDI2h?= =?us-ascii?q?YYUBDO0PMuRWr4nlpVYCsBWzCgawC+3g1DBInWT73bE43uk7DQ3LxhAsE8wIvX?= =?us-ascii?q?/JrNv1LqASUeWtwafM1zrDau1Z2Szg44XWaB8hu+2MUqxqccHMzkQvFQ3EgUmK?= =?us-ascii?q?poz/IzOZyP8As3Sb7uV8VeKvjHQrqwdqoje13MsshY7JhpwMx13C6C53w541KM?= =?us-ascii?q?WlREN0btOoCptduzyAO4doTc4uXXtktDs8x7Ybo5C0ZjIKx44ixxPHbvyHdJWH?= =?us-ascii?q?7Qz7WeaKJDd4mGpleLWihxau6USgyvPzVs2z0FtSsipKiMPMtnEQ1xzI8MSHVv?= =?us-ascii?q?t88Vuh2TaIzQzT7P1LIVsomqbBLp4hw7owmoISsUTFACD2hF37gLKZe0gr4OSl?= =?us-ascii?q?6/nrbq/4qpKTKYN4kBzyPrwrmsOlAOQ4NgYOX3Kc+eS5zLDj5lP2QLFLjv0wj6?= =?us-ascii?q?nYv4nWKt8cpq6kBQ9azpgs6w2kAje60NUXgXkHLFVfdBKBlIjmIUvCIP//Dfeh?= =?us-ascii?q?m1isiitkx+jaPr39BZXANnrDkLDnfbln905cyBA8zdZE6pJWDbEBJvfzVVXqtN?= =?us-ascii?q?zEEBA5KRe0z/zgCNVn2YMUQXiPDbOBMKPOrV+I4foiI+uOZIAPpDn9KOMl5/no?= =?us-ascii?q?jX84h18QZqep3Z8KaHG3BftmPkOZYWbxgtsbFmcKpAU+RvTwiFKeST5Te2qyX6?= =?us-ascii?q?Uk6zA1CYKmCYLDSZ63gLGa0ie0AIBZZmdcCl+WCXfobYKEW/USZy2OPs9tiDsE?= =?us-ascii?q?VaKuS4U5zxGhqBf6y6Z7LurT4iAXqI7s1N1y5+3ViRE+6Cd5D9qD3GGXTmF1n2?= =?us-ascii?q?QIRzks0KB5v0N91k+J0bJkjPxACdxT+/RJXx8nOp7A1eN6Ecv/VR7GfteMVFmp?= =?us-ascii?q?WM6mAS0rQtI33dAOf153G8++gRDbwyqqH7gVmqSLBZ019aLc2WP8J8N5y3rf1a?= =?us-ascii?q?khiUMqQs1VOm28ha5/9hbTCJDTn0WfiamqabwW3DTR+2eb0WqOoEZYXRZuXqXd?= =?us-ascii?q?R38ffErWrc/i60PaVbCuE7UnMhBZyc6GMKRFdsPmgU9BRPf5N9TUe3ixlHuoBR?= =?us-ascii?q?aU2rOMa5Lne2sH3CrHDkgLjwET/W2dOAg7HiehonvSDCdgFFL0eU/s9vN+qHyj?= =?us-ascii?q?RE8u0w6Kd1Fh16ay+hMNhvyTUfAT3rUZuCo6qDV7BlW939XLC9aaoAphZqpca8?= =?us-ascii?q?sn4FhbzWLZqxB9Ppu4Iq94m1EeaQV3sF301xhsEIpPjc0qoGktzApoJqKSyElB?= =?us-ascii?q?eC+A3ZDsJr3XLXH//Auha67M3VHey8qW97wU6PQ+rFXisgSpGVAk83l91dlazW?= =?us-ascii?q?ec7I3QDAUOSZLxTlo39x9iqrDUeCY945/U2mN2MamvqTLCxcwmBPE+xRa9etdT?= =?us-ascii?q?KqSEFBX9E8cCHcihNPQqm0S1bhIDJO1S6LM7MN6nd/Sc3K6mJ/pvnDWjjWtb+o?= =?us-ascii?q?99yV6M+zB6SuHWw5YP2+uY0RefVzfgkFehtdj6mYZFZTEWGmqw1zPkCZVLaaJs?= =?us-ascii?q?Z4YLDn2iI8qtxtVxn5TtQWJX9Ea/B1Ma38+kYQSSb13h0g1M0kQXu2arlje4zz?= =?us-ascii?q?xzlTEpobGS3CjPw+TkbhUHIGlLSHNljVf2Loi+l8oaU1Swbwg1iBul4l73x6xa?= =?us-ascii?q?pKRkM2nfWFxIcDbyL2FjVKuwq7WDbtVU6JMwsCVXVuW8bkyBSrLnpRsVzT/jFX?= =?us-ascii?q?NExD8nbzGqpon5nxtihWKHK3ZzqH7Zdt9qxRjD49zdS+Vc3iEbRCZkkjnbHF+8?= =?us-ascii?q?P8Om/d+MjZfMrvi+V369Vp1UaSTr1ZmPtDa/5WFwGxKzheu8mtrjEQgm1i/70c?= =?us-ascii?q?JnVSDUoBb6ZYnky762MeR5cUl0HFX88dZ1Gplikossg5EdwXsaiYuT/Xocimrz?= =?us-ascii?q?MstU2aTlbHoLWzEL38TZ4A//2E1sNniJ3Z72Vm2Bwst9YNm3en0W2iQg4M1RFq?= =?us-ascii?q?eU6qFLnStvrlq+sw3RfeB3ni0Bxvs29H4an+YJtRI1ziqHH7ASGVJVMjDtlxSU?= =?us-ascii?q?79GytatXa3ypcbSq00p+h9+hBqmYog5AQHb5ZosiHSho48VnKl3MzXnz5Z/8eN?= =?us-ascii?q?bKa9ITqgObkw3bguhIM5I+iOAKhTF9NWLmun0l1vQ7ggBw0pG0u4iHMWpt87yj?= =?us-ascii?q?Dh5eKDL1e9sZ+ivxgqZGgsaWw4evE41vGjoRWpvoUfWoEDcJuPTpKQmBDTo8qm?= =?us-ascii?q?2BFrrHBw+f70VmoGzTHJC3LX2XI2MZzdp6ThmHOENfmBwUXCk9npMhEwCl3sjh?= =?us-ascii?q?cENn6TAN+l73sAFDx/luNxbhTmffvxunZS0sSJeBNhZW6B9N51vNO8yE8u1zBz?= =?us-ascii?q?1Y/oGmrAGVMGyXfQpJAXsMWkOeA1DjObmv6MLa/OeEA+qyNfzOYa+BqeZGTfeH?= =?us-ascii?q?2Yqv0pd6/zaLLsiPMGNiAOMm1UpYR395HdjZmzIUSyEMjS3Cc8ubqA27+i1toc?= =?us-ascii?q?C16O7rVx735YuTF7tSNs1i+xasgaiZL+6QnD10KThZ1pMW3n/I1LYf3F8Uiy50?= =?us-ascii?q?cTmiDbUAujTJTK7Kna9XFREbYTtpNMRU96I8whVNOcnDh9PtyLF3leA6C1FEVV?= =?us-ascii?q?z9ncGkfs0KLH+jO1zZHkqLM66GJTLTycHtfay8UaFQjPlTtxCopDmbCFHsMS6M?= =?us-ascii?q?lznzTR+vL/pBjDqBMxxdpYG9aAxiBXLnTNL7bB20KsV3gSQqwb0zhXPLNWkcPS?= =?us-ascii?q?J6c0xTsr2a9TlYjelnG2xd8nplKvGJmz2D4OnGMJkWvuVkAj9vmuJB+ns61aFa?= =?us-ascii?q?7C5aS/xugifSqMBho02+mOmV1jVnSAZOqipMhI+TpkpiOKrZ9p5GWXvf4R0C83?= =?us-ascii?q?6fCxUQqNtjENHvvLpQytfXnqLpNDhC687U/dcbB8XMMs2HP2AuMQT3FzPPCwsF?= =?us-ascii?q?VSCkNWfah0NHkfGS8maarp81q5T2n5oOULBbXkQvFvwGEkRlAMACIJBvUzM4lr?= =?us-ascii?q?6bidQE5WC5rBjQWspauIvIVuiVAfrxKzaUlqVLZxwNwbzkN4sTLZH711ZkalZk?= =?us-ascii?q?gITAA1DQUsxVoi19cg80p11A8Ht+T203xU3ocQat4HgdFf66gBE2lhd+YeQq9D?= =?us-ascii?q?fp/Vg7PFzKqzUskEMpg9XqnSiRcCLtLKe3RYxWDTT7uFI1Mp7gQAZ1ahaynVB+?= =?us-ascii?q?OzfCXLJRjLpgeXptiADCpZtFAeRcQrFcYB8M2fGXYO0l0U5CpSW820BI//HFBo?= =?us-ascii?q?dilAYxapGsrmhA1B9kbN47PazQPrRGz1hKiqKIoCCoyvg7wBUCKEYV7GOSZCkI?= =?us-ascii?q?tVQVObkhISqo+PFj5hKGmztCY2UDTeQlouht9k8nPOSA1S3g2aZZKk+tL+yfM7?= =?us-ascii?q?+Zu2/YmMGVWFwwyEIImFRe/bVty8gjaVCUV0chzbuKCRsGKdfCKRtUb8pO9Hnf?= =?us-ascii?q?ZyCOvvvRwZhtJYWyCvjoTfOStKYTmk+kGAEpH54S4cQHH5is11rVLcjhLL4Y0x?= =?us-ascii?q?kt4x7rJFqdBvRTZB2LiCsHo924zJJvxolSODUdAWR7MSWq6bfavRMlgP2GXNgq?= =?us-ascii?q?eHgaRZcEOmgwWMKkhy5Tp25AAyWv0uIF1AiC6CfxpifKDDj8ddVjYuuUZRN3Bd?= =?us-ascii?q?G5/jU/67S5hUTR8prAO2HwLc5itcPX6eMGu5aHDOtZTaV8s0fZnIlYW3yqUm7U?= =?us-ascii?q?HNGoJpjxa5MjYsfuBna8TFO/lyo/T93tM9a1MqiInQboSJ5Ov4mf3TAsKdGyGS?= =?us-ascii?q?kbGxZwoeED46R8ahcYbpUgYB7nrQI+O7WxIAeFyNmuRXiiKSdORflF0eq6f6BX?= =?us-ascii?q?zzYrbuKi03QvUJc6wvKt/kEQWpEFkAvexe25aIlEUSn/AHtdex/ApSAhjWhuKv?= =?us-ascii?q?4ywvsjwBPPqVQcPC2LdO1taGxAod48AEifLmhoBWUjRl+Tl4zD7hSr37AI8CtX?= =?us-ascii?q?h8xU3vFdsHjiop/fZyqhWLatqZXUryUgbd8mo6lqMYL7O8WIqYnQkyDYQpTLrg?= =?us-ascii?q?KFVyu6GOZAldhLPCJUWv9Iln85OcYeo4pO9VIxVtsiJ7xIEKQsvK2lZid/AC4d?= =?us-ascii?q?yC8YWJmM3Docjeegw7HajAufcIw+MBwYt5VPmsEdXDRsYiMZv6CuTJnWl3WeRW?= =?us-ascii?q?gVPggT6QVM5AQPlo90f+Dl74rITINCyzFMufJ0VzHHFp92+FvnUmuWm0T3SO29?= =?us-ascii?q?k+y12gJf1Pzt3sMHVx5/CEhdwudWmVErKLxsKqkfoJDFvSGSeUP9pmLtx/OsJE?= =?us-ascii?q?NNxs3Ma134EI3FuHLmXS0G5H0UQ5VDyHLEGJQTkgp5aborq05WLICgZEn++yQu?= =?us-ascii?q?x551ELmgScCr21EloG4HRyesD9pOFeVmv0zSWDJ7f5CrspXkNo5VQm9I5pKdrV?= =?us-ascii?q?JZn19sMy690pVcLM5M7iQLXDhVrjWXpMGyR9Fb2c9qE58MJc9yu3jnGKxePpiR?= =?us-ascii?q?v2Y7ur3oyn7X/TA8rFe6yyuyG6++U+JW4XceFh8vJ2uAtkklF/Es/XvK8lDRrl?= =?us-ascii?q?B0+P9WBqSIjUV0uzt9AoxCBjNS2ny/KVR8UmVGuf1AKKvJa8xcX+UyZRi3Nhw+?= =?us-ascii?q?D/EmxVaG/UVpknrifiN9qBNa+zjDUAkwSyYVmK3hmToEqsGoITUaUY5HbS09by?= =?us-ascii?q?fZLAKWgSJXvBFBZExxRp8WHM1F9K8B3YtI4MXNVFygKScbUxx+Lgg4y+ZQlVZf?= =?us-ascii?q?sEWEfiDQFRGndfjTvRFrf8qdscCkIe/l8wdAj4PorPo3974fR3G8nw2iX8zepZ?= =?us-ascii?q?fmttKWrkuOaLv4M+qkbH/bUjfDkBCwiq04D5TR+yjTNxRbJIdkxXU4ZpjuFHDE?= =?us-ascii?q?MQ5AJ60FO0pRTbp6ZsleouBGe89kf74E+bd2BhKbXBzgBZCvoeJdLlbUWDTeNT?= =?us-ascii?q?mO/fK5oYLP97zSU+zgataLx3bdTKJ9Jo165iXjG7f2zY9e/VL72ut39kxkV1fJ?= =?us-ascii?q?LjuMrMnlJgMX/smtbFXivpwuHTPSHphwjGDhxkZad8oYWyeq6ogXyItF6HbsTu?= =?us-ascii?q?J1ylX8sOtI+LR/9IY35apmxd2zJafIJvRQqVVnDQSMBgV26pUtB3ByR2JLbe8L?= =?us-ascii?q?L/fRZqAZgtrwq+3sEqwX9RmV+/BYadTbJkHOgM+/CiqGRRxDhgcBpiYQLhGA2P?= =?us-ascii?q?6dh690VcGlqPD72k035Vi+IAQGzLdw6oia4aeIuPXYbx3KzbgDQKTqQN38rqg0?= =?us-ascii?q?sUOI+fIkjKIOenByYwC/FugdUtUQxmbmzaAv1y4sEsXDH7z6+PFZTHI5gijgm4?= =?us-ascii?q?1hEFUKB/MUB6SE8Z5ZnmcilOzTLscWfbxammaTCR6kFacPyXiq6ySLJ2llhgvB?= =?us-ascii?q?0wrqTWOy61/2qjR4QTDXwtfmnUdUWaO7BUBIXyqmIUV4qi+APBL0tNrrvqQ49F?= =?us-ascii?q?05PXbgtN2Tj2uhJLNWH8rkKdyHPSY0pUwYjJstRtyuw48XA9y9L8kN8HtmdPvR?= =?us-ascii?q?93urkzNdo6dAn4fe5tqV+vDXEHS7ga2VtaiCxDdCyncipVE/8NegNvPQ6NKWX/?= =?us-ascii?q?SkzWERTz1wuwHZRR66tqTbr0wIOUyMyErLmo0KPtRC0Hk9yE7n5PYsQMgy9AVY?= =?us-ascii?q?GYbMffUCqi7vODHs21aQf8o3VjWC0ztQBl/1EFh5F7Im123sp8/Jjmnf+0E2SY?= =?us-ascii?q?ZsbUDnggZ3D4ogI0I39FcX2jYDERQKaR2DF76oBF/lLIUeWkgBaBSHwKC6db0q?= =?us-ascii?q?3U132b6g+OjTYvFiCKUXK/ZdlAmOnEJBFZ4Mtq0eWr18cUdH9KHLvgjiF5TnX/?= =?us-ascii?q?/+mHooL/K1XtxV8cAXtnsl+Aa/RAOs6Yxd4LYfiZCIcLNEYJfXscBk9Uhn+SIA?= =?us-ascii?q?dixDgRh4lRO5UvoQpOP97djBtpqn9OKuWLwqR+UN+Bg+H35+gIfogFA/vdHX0P?= =?us-ascii?q?9RSpHPiYvh9ABCOXiKt5jB3hZhKOoOJIOrfKp6+HUcPScePW8OMcCQa/Yi/y9n?= =?us-ascii?q?KC/T6EBaAsMQedMYO9LAmQ9OhU3zRr5T6srbF0ScC4dya8An8Wr3xyoo8ZsnSO?= =?us-ascii?q?rg7iG5JYzH5VFXI/xDlDlslM7FpOUNzvrdFi4X4WWeaxhyxS+C0IeCC/Lx/eWK?= =?us-ascii?q?1dHVWEgLHiooXIdHJDuN4xarRuyrm5X1SgmU8NP8gIoidEKMQXy8hLgKsqRWHu?= =?us-ascii?q?FckSj0wj9eFoTxh/KUrdWs8ndXuUNbH4Zz9xHFH79fPppjMxTiisarXlR8Bjf4?= =?us-ascii?q?eMzMcxouv+yWxvsD4+pgLEb+YI4bLQgCy73k9XpUQAxuSKT1vlaCR+4RYsVpSO?= =?us-ascii?q?/cpHBP9Y1gM7MPPESapJHyoTdHtEs2ABQwZLEtoTJUcEjOnAtIW6f7o7MAhQ4c?= =?us-ascii?q?XsR/uUBSA26wP3g+5zXfX6RPkKaREOAV8imUTqEWUUVoNSN+QxWv1Jpye7upme?= =?us-ascii?q?1HvX5HnyN8pvgqyD9mRBqntC3ypqINxygv+LWluzUAo3BFSPuRkzvQA1VZ0PsK?= =?us-ascii?q?lbscC2rl6VGkYXkDcpH94L98KMTk6Iku/nU/YRI4fyEcWuSgES7whbuSAoOTqN?= =?us-ascii?q?JcmAKNuMLWYL+xMycSOLo9yRb4SnlzyAfemghn8HcRTjWm8tAkOJ23Odw5ySqw?= =?us-ascii?q?BWjbaFEM77tGsMv1sl4KQvU5aVdlwGh4yciHQSsNRM3TFGoviAgrd3lEeopZ6R?= =?us-ascii?q?AGD6koniqIvq5e8wEWYDfVEpyl+o7UncfJxXkyU8xnxmfXpq2ZnJMlzmdpm9Ru?= =?us-ascii?q?7i6BoH4SbfDXU9dwAnjv0YdS0fD+Z/Sosu0cVItmyaiuUPwcPcmn42e23otlWl?= =?us-ascii?q?O9zLQEA1W5KPMDxqvcUyq9TG2YWOeLc2uLnzsiME79/xqoLloxaMhUqU8xKO3C?= =?us-ascii?q?iYBAlwf5S7N7Wj2QpUPHzGwkKe4VbBw5uIG7ewERV+4RY++cJfQywP0gFlQDcm?= =?us-ascii?q?XFHSxsC++5qVSthpR0O2184UXmZuTg6hjmMNyWGhYeC47boJlx+fi0Rm+aPH9g?= =?us-ascii?q?yxpyPFJq+OjDDVQxsfRcc42QndjWiNR3y+kFd+1iMScloN4chppj6ZWI0MeNaR?= =?us-ascii?q?zRwIj9JdXUoviAHfLS1EUremBfUrocfwz1/YE6McAjV73UB7tZsgwWBbImT5w5?= =?us-ascii?q?K2fx6KZ0IRt9cw7JfrS0g9XlqfyQa5tRpn/W8kgwIznGtx0E0Py0QhRxb4q2iH?= =?us-ascii?q?XqPJAwWjVBosVqChtiAoRCANsArw69DJ6PhKG7isO++19gu+AUr6X8EPbK28ql?= =?us-ascii?q?349pRZhV+VSLPCrNBKlsmklliuWygvHd0pj+EM/ifdIEVPNnQm7ecbLGH5+wKj?= =?us-ascii?q?SJOs7mfE5G6bGc2qpjUhqNfCD5Q7aGtCq8OfV//0o7zo14fOzOzD0i6L3V18fy?= =?us-ascii?q?Z2FFqSe5s3GJLIFQ4UfJBePARRJUT+SK8GJ+Eq0KYov47uAOMcYtwNKE+Ql88C?= =?us-ascii?q?xC0NeZI6imtkLM31h0eo7bLEvo3SY5XpIHIAq+MUsqn2DZrnXdAXJBLsmrM8Vt?= =?us-ascii?q?h8yVDhP17UlrhW4tfnJBGnbvRdqJO2gUwcG+ZAqR+w9QEtYDmfK3eU4/tq2vRu?= =?us-ascii?q?loOolFlf+stLoZjdZjMzvPS9RCPyHMML92OSJcAf7Uq1QvZh4EsqM1WpsuZZSU?= =?us-ascii?q?O0MILluPxTnpzQTc1U30dtqs1LuGISsN7npGz6jF0SVXpwWjt/eWmNHjUKvebJ?= =?us-ascii?q?HwRvLSNzAlVj6CTzQoDUmp4Uuku+YDvPeALmcQuEsbYjiTCAENoqBitsbQDmvJ?= =?us-ascii?q?lu14fZ0KmeqWWybuRy1kjKAyHDpEtViQQ/ofEgnbd33hgG9buAy4PP9M/GnlYq?= =?us-ascii?q?aexqVPXuwZHIpMfueeQ9vCdvBUPy0omSkBOOagY93cqK400knGTWscD6bF9V6T?= =?us-ascii?q?QVWIQvOC3TLrXIQUv48yuiYy/NLfgDN3GbzSP7mDvz6u7pK4jCGAtO3cUWktZU?= =?us-ascii?q?g1jfkHAGaf3RZAJmYEC8sJt07zWKKAYVhD1G56wd5pjgQBfAV1T21GzmxdnPH7?= =?us-ascii?q?HNZQD1ETkjCAWvoDOXJ+CT4rtWSD+BH/e5RUu9/YTnVCrJMQWIEdK78u84CRN6?= =?us-ascii?q?wOlqV6lAl6qTA35n3OR2hWiRiIpu+KRK8=3D?= X-IPAS-Result: =?us-ascii?q?A2GXAwA2ce5Y/wHyM5BcGwEBAQMBAQEJAQEBFwEBBAEBCgE?= =?us-ascii?q?Bgn8pgVoSjmyRTJZyKIoGVwEBAQEBAQEBAgECaCiCMyKCQQYBAjcUIA4DCQEBF?= =?us-ascii?q?ykICAMBLRURDgsFGASHZEeBPQ2rMiYCixuILoJjhFoCEQGGAQWBKwGbXAKSYQK?= =?us-ascii?q?KfIZGlAJYfQgcCQIUJlBog3McgX9ZhmUPF4IXAQEB?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 12 Apr 2017 18:27:06 +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 v3CIR6Hl030563; Wed, 12 Apr 2017 14:27:06 -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 v3CIQLr4117094 for ; Wed, 12 Apr 2017 14:26:21 -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 v3CIQK5d030322 for ; Wed, 12 Apr 2017 14:26:20 -0400 From: James Carter To: selinux@tycho.nsa.gov Subject: [PATCH 2/2 v2] secilc: Add options to control the expansion of attributes Date: Wed, 12 Apr 2017 14:26:54 -0400 Message-Id: <1492021614-23133-3-git-send-email-jwcart2@tycho.nsa.gov> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1492021614-23133-1-git-send-email-jwcart2@tycho.nsa.gov> References: <1492021614-23133-1-git-send-email-jwcart2@tycho.nsa.gov> 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 Added "-G, --expand_generated" option to specify that all automatically generated attributes should be expanded and removed. Added "-X, --expand_size " option to specify which attributes are expanded when building a kernel policy. All attributes that have less types assigned to it than SIZE will be expanded when writing AV rules. Signed-off-by: James Carter --- secilc/secil2conf.c | 2 ++ secilc/secilc.8.xml | 10 ++++++++++ secilc/secilc.c | 31 ++++++++++++++++++++++++++++++- 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/secilc/secil2conf.c b/secilc/secil2conf.c index 5d8fe87..4e97dd6 100644 --- a/secilc/secil2conf.c +++ b/secilc/secil2conf.c @@ -124,6 +124,8 @@ int main(int argc, char *argv[]) cil_db_init(&db); cil_set_preserve_tunables(db, preserve_tunables); cil_set_mls(db, mls); + cil_set_attrs_expand_generated(db, 0); + cil_set_attrs_expand_size(db, 0); for (i = optind; i < argc; i++) { file = fopen(argv[i], "r"); diff --git a/secilc/secilc.8.xml b/secilc/secilc.8.xml index 9e2670b..4c779b6 100644 --- a/secilc/secilc.8.xml +++ b/secilc/secilc.8.xml @@ -81,6 +81,16 @@ + + Expand and remove auto-generated attributes + + + + + Expand type attributes with fewer than <SIZE> members. + + + Increment verbosity level. diff --git a/secilc/secilc.c b/secilc/secilc.c index f4ecbee..f2232e7 100644 --- a/secilc/secilc.c +++ b/secilc/secilc.c @@ -64,6 +64,9 @@ static __attribute__((__noreturn__)) void usage(const char *prog) printf(" -D, --disable-dontaudit do not add dontaudit rules to the binary policy\n"); printf(" -P, --preserve-tunables treat tunables as booleans\n"); printf(" -N, --disable-neverallow do not check neverallow rules\n"); + printf(" -G, --expand-generated Expand and remove auto-generated attributes\n"); + printf(" -X, --expand-size Expand type attributes with fewer than \n"); + printf(" members.\n"); printf(" -v, --verbose increment verbosity level\n"); printf(" -h, --help display usage information\n"); exit(1); @@ -90,6 +93,8 @@ int main(int argc, char *argv[]) int preserve_tunables = 0; int handle_unknown = -1; int policyvers = POLICYDB_VERSION_MAX; + int attrs_expand_generated = 0; + int attrs_expand_size = -1; int opt_char; int opt_index = 0; char *fc_buf = NULL; @@ -107,12 +112,14 @@ int main(int argc, char *argv[]) {"preserve-tunables", no_argument, 0, 'P'}, {"output", required_argument, 0, 'o'}, {"filecontexts", required_argument, 0, 'f'}, + {"expand-generated", no_argument, 0, 'G'}, + {"expand-size", required_argument, 0, 'X'}, {0, 0, 0, 0} }; int i; while (1) { - opt_char = getopt_long(argc, argv, "o:f:U:hvt:M:PDNc:", long_opts, &opt_index); + opt_char = getopt_long(argc, argv, "o:f:U:hvt:M:PDNc:GX:", long_opts, &opt_index); if (opt_char == -1) { break; } @@ -180,6 +187,24 @@ int main(int argc, char *argv[]) case 'f': filecontexts = strdup(optarg); break; + case 'G': + attrs_expand_generated = 1; + break; + case 'X': { + char *endptr = NULL; + errno = 0; + attrs_expand_size = strtol(optarg, &endptr, 10); + if (errno != 0 || endptr == optarg || *endptr != '\0') { + fprintf(stderr, "Bad attribute expand size: %s\n", optarg); + usage(argv[0]); + } + + if (attrs_expand_size < 0) { + fprintf(stderr, "Attribute expand size must be > 0\n"); + usage(argv[0]); + } + break; + } case 'h': usage(argv[0]); case '?': @@ -210,6 +235,10 @@ int main(int argc, char *argv[]) cil_set_mls(db, mls); cil_set_target_platform(db, target); cil_set_policy_version(db, policyvers); + cil_set_attrs_expand_generated(db, attrs_expand_generated); + if (attrs_expand_size >= 0) { + cil_set_attrs_expand_size(db, (unsigned)attrs_expand_size); + } for (i = optind; i < argc; i++) { file = fopen(argv[i], "r");