From patchwork Thu Jun 1 13:23:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Lawrence X-Patchwork-Id: 9759605 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 299B460390 for ; Thu, 1 Jun 2017 13:24:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 10A7923F88 for ; Thu, 1 Jun 2017 13:24:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 055C026256; Thu, 1 Jun 2017 13:24:24 +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]) (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 7B19A25E13 for ; Thu, 1 Jun 2017 13:24:22 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.39,279,1493683200"; d="scan'208";a="6267444" IronPort-PHdr: =?us-ascii?q?9a23=3A9iqdxBW0qEghrCD6pDsWZZHwwhvV8LGtZVwlr6E/?= =?us-ascii?q?grcLSJyIuqrYYhWOvadThVPEFb/W9+hDw7KP9fuxBipcsN3f6TgrS99lb1c9k8?= =?us-ascii?q?IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUhrwOhBo?= =?us-ascii?q?KevrB4Xck9q41/yo+53Ufg5EmCexbal8IRiyrwjdrMYbjI9tJqsw1xfCv2dFdf?= =?us-ascii?q?lRyW50P1yYggzy5t23/J5t8iRQv+wu+stdWqjkfKo2UKJVAi0+P286+MPkux/D?= =?us-ascii?q?TRCS5nQHSWUZjgBIAwne4x7kWJr6rzb3ufB82CmeOs32UKw0VDG/5KplVBPklC?= =?us-ascii?q?EKPCMi/WrJlsJ/kr5UoBO5pxx+3YHUZp2VNOFjda/ZZN8WWHZNUtpUWyFHDIy8?= =?us-ascii?q?dY8PBPcfM+heoYf2ul8CoQKjCQWwAe/izCJDiH3r0q0gy+kvER/I0hEuEdwNt3?= =?us-ascii?q?rbo8n6NL8QXOyowqTH0y7DYuhK2Tvh8oXEbgosre2QUb92bMHfyVMvFwTAjliI?= =?us-ascii?q?tILlIy2a1voTvGOG6eRvT+yui3Q5pAF3vjeg2Nonh47ShoIR0F/F+z95z5gzJd?= =?us-ascii?q?KkVkF2esKkEIFOuCGBN4p2WdkuTH1vuCY/07ALv4OwcisSyJk/2hLSZPOKf5KI?= =?us-ascii?q?7x7+TuqdPzh1iGx/dL6inxq+71Wsx+zmWsS6zFpGtDdJn93RunwXyhDe6NWLR/?= =?us-ascii?q?1g9Um7wzmPzRrc6uRcLEAxkqrUNoAuz6YrlpoWrUTDBij2mFjqjKOOdkUr5Oyo?= =?us-ascii?q?6+P/b7X6vJCcLY50ihzlMqg0hsy+Afg3MggJX2SB/+SzyKbj8lHjTLVPj/02lr?= =?us-ascii?q?HVsJHcJcsFuq60GxJZ34ks5hqlDzqqzc4UkWcIIV5bYh6LkpDlO1TUL/D5Cfe/?= =?us-ascii?q?jU6skDBux/3eJb3uHJHNLnnFkLf8crdx8lVTyA0uzdBZ+51bFKoBLenvWk7xqN?= =?us-ascii?q?PYDhg5Pxayw+b8EtpxzIweWWWRAqOBKqPdrUeI5v4zI+mLfIIVujH9K/4/6P7y?= =?us-ascii?q?jX82g1kdcLKr3ZsQbnC4G+5pI16FYXXymNcBCn0Gvg0kTOzlkFeCSyJcZ26uX6?= =?us-ascii?q?Ig4TE2EICmDYXZSY+xg7yBxyC7HptXZmBYEV2MH3Pod5iLWvgXdSKSJNNhkiEe?= =?us-ascii?q?WbimUY8h2gmktBXmxLp/MurU5ioYuIr71Ndr/OLcixcy9T1oD8SayGyNTn97kX?= =?us-ascii?q?0WSDMs26B/u0N9wE+Z0adkm/xYCcBT5/RRXwgnMp7cyep6BM3sVQLFf9eEU0yp?= =?us-ascii?q?Tcu8ATE2VN4xxMUOY0llEdW4kh/DxzaqA6MSl7GTGZM07rjT32LqKslhzHbG0b?= =?us-ascii?q?UugEM9QstTL2GmgLBw9xTLDY7Tj0qZj7qqdbgb3CPV9WeDy3aOs19cUAFuVKXK?= =?us-ascii?q?Q2wfZlHWrNni4UPCV6GhCbIiMgRbyM6CLrBFatrmjFlcQ/fjItveaXqrm2isHR?= =?us-ascii?q?aI2q+MbI3ydmQd3STdD04EnhsW/XaCLAQ+ByGhr3jYDDN0D1LvYELs8fdgp3+h?= =?us-ascii?q?SE870R2KZVV717Wp4h4VmeCcS/QL070aoCcusS90HFem39/NE9qPvRBhfKRHYd?= =?us-ascii?q?Ml5FdIz37WuBJnMpynNaBiiUYUcx5rsEP2yxV3FoJAnNAkrXMryApyLLyX0Ela?= =?us-ascii?q?ejOWw5//J7rXKnPo8xC3ca7W3VPe38iK9acT8vg4rE/jvA6xHEo473pny8VV02?= =?us-ascii?q?eb5pjSAgoSS4j+UkAr+Bh7vLHXeSw955vV1XF1Kqm1vCTC18guBOs/xRaqZ81f?= =?us-ascii?q?P7+cFA/uD80aANCjKO8wlFiqaRIEIftf9K0uMMOlcPuGxbSnPOF6nDKplW5H+p?= =?us-ascii?q?xy0lqQ9ypgTe7Fx4wKzOyC3guGSTj8lkysvdrrloBBfz0SGXC/ySf8Do5LeqJy?= =?us-ascii?q?ZZoLCXupI8Cv2tpxnZrtVGBD9F6/B1IG39SkeQGOYFz8wwJQ01gXoX29lieiyT?= =?us-ascii?q?x7jS0ppLKF3CPS2+TiaAYHOmlTSWl5g1fsO4+0j8sGXEWzdAgpkhyl5Ej/x6dB?= =?us-ascii?q?oqRzNW/TTllUfyLuNWFtTrOwtqaeY85I8J4pvz9YUOCgYV+EUL79uAAX0z39EG?= =?us-ascii?q?tE3z87ajSqto/+nxxgh2KXNGxzo2bBecFs2Rff48TRReJM0TUbRSl3kz3XC0Og?= =?us-ascii?q?MNmu+NWbi43MsvuiV267UJ1cbzXrx5uatCSn/W1qHQG/n/erl935EAg1zTP719?= =?us-ascii?q?5wVSnSsBn8Yo7r16K1Me98ekloBVn85NBgGoF5iIcwg4sQ2XcCjJWP4XUHiXvz?= =?us-ascii?q?Mclc2a/maHoNRCULw8LM7Aj+xkJjKnOJx4TkVnSS2cZhfMG6YmIQ2iI8889KE7?= =?us-ascii?q?2Y7LpakitpulC4tx7eYeBhnjcBzvsj8GQag+YNuAop0CqdGKwdHU5WPCH3jBSI?= =?us-ascii?q?8syxrL5NaGaoa7iw21J0ncq9A7GavgFcRHH5d486HSBq88V/NEjA32fp5o7/f9?= =?us-ascii?q?nQac4TthqSkxrbiuhZNJQxlv0WiiZ9P2Lyo2ElwfYhjRNyxZG6oJSHK2J18aK6?= =?us-ascii?q?HBFYMCb1atgQ+j7zi6ZehcCW0J6zHpl7HTULRpToR+qyED0OrfTnKxqOEDokp3?= =?us-ascii?q?eDA7XfAAuf51l+r33VFZCrK2+YJGMCwNV/XxmSOlZfgBsOUDUhmZ45Cxqqy9D/?= =?us-ascii?q?f0d34TAR/FH4pQVWxuJuKRb/Tn/VpB20ZTcsVJifMB1W4xlc50fTLMOT9fxzHy?= =?us-ascii?q?dF8Z2htgCNLHKUZxhQB2ETRkOEH0zjPqWp5dTY6+iXHPe+L//VbLqSqOxeS/eJ?= =?us-ascii?q?yYuh0oR8+TaALMKPPmNtD/cjwEpMQWh5G9jFmzUIUyEXlCLMb8qFqxqn/y13qc?= =?us-ascii?q?6/8Pr1VwLz+YuPC7xSMdBx9Bysh6eMKfKQjj5jKTlEzpMM2WPIyL8H0V4ckS5u?= =?us-ascii?q?cSWtEbMFtSPWQqLfhLJYDxkBayxpLMtI9aU83gtTNsHHltP5zLl4juQ6C11dT1?= =?us-ascii?q?zuhtmpZdAWI2G6LF7HHluEO6mdKD3ExsH2brmwSbtOg+VIrxewoyqUE1f/PjSf?= =?us-ascii?q?kDnkTwqvPftCjS2BORxRooW9chFtCGX4Vt3pdhi7PMVwjT0szr0+nmnKOnIEMT?= =?us-ascii?q?hgb0NNqaWd7S1CgvphBmNB9WBqLe+Ymyae9OnVMYwZvuduAihukOJa+ns6waNP?= =?us-ascii?q?7C5YXPx1hDfSrtl2rlGgiOmA0CJnUAJVpzZFhYKLp15iObnX9plBX3bL5hQN4n?= =?us-ascii?q?mRCxsQo9tpENrvu7pfytLXjqL8NC9C887I/csbH8XbM9mIPH0lMRroAz7UEBAF?= =?us-ascii?q?QSSwNW7Bm0NRiuqS+WORrpg7rJjshZUPR6RHW101DPMaF19lEMYMIZhtQjMkir?= =?us-ascii?q?mbjMgS6Xq5thnRS91QvorbWfKKHfXvNDGZgKFCZxsJxbP4KZocNpbg1kN4dFZ6?= =?us-ascii?q?hoPKF1DXXdBXrS1rdhU0r1lV8HhiUm0z3FroZRis4H8cEv60mAU7hRZgbus29T?= =?us-ascii?q?fj+VE3KkDNpCsqn0k7gc/ljiyJcD7tMKewWplbBDD7t0crLJP0XR14bQqqnUN6?= =?us-ascii?q?MjfEQqhej7pkdW9wjw/dtoFDGflGTa1LeBUQ3+2YZ+000VRArSWq3VNH5ezACZ?= =?us-ascii?q?d4jgsqdp+toGxG2w14dt41IrLfJKlSw1dMgaKOuzOn2foqwA8CPUoN9n2deDIQ?= =?us-ascii?q?skwSKrYmPzao/vBr6QGanTtMZnIDV/4xr/Jp8UM9IPiAwDjm075YKUCxNvaTL6?= =?us-ascii?q?WHtGjcjcSIWE8/1lsUl0lZ+rh7yd0jfFSPV08x1rSRDQgGNcrZJA5ObspS7mXc?= =?us-ascii?q?fSGAseXV25J6IYW8GvruTeCQqKYemlikExoxH4QQ8sQBGYGh31zCIsf5Lb4K1A?= =?us-ascii?q?4t6R/xK1WfFvRJfxyKkCwZrM6j0Z93x4hdJi0dAGlnNyW4+KrXrBcwgPWfRNc2?= =?us-ascii?q?fmsaXowcO30rQ821hTRWv3taDDatzOIU0xOC4CX/piTNFjnzdcBvZPOJZRNqEt?= =?us-ascii?q?624ywz87SxiV7U8pTeIHv2NdJ8td/T8ekavYqIC+tITblhtEfRg41YR3uwU2HR?= =?us-ascii?q?F960Jp/wZpIjbdzyF3a2SFu/iyg6T83pJtaiMrCIgR30RYZTqISbxy4sNcu8Fj?= =?us-ascii?q?EYBhdxqPoO6757ZQ0Gf5U0ewXotxgkO6y5PgiYzs2kQ3yxJjtOU/lf0eK6aqRK?= =?us-ascii?q?wCUwa++6z30gTo0nw+Ss704CWosKjhDfxPakYYlSSy7zFWJBew/Xvyo2i3BhNv?= =?us-ascii?q?ouwuc42B7IskMcMjCRe+xvdGxEv8oxBVyVIXVuFmU0XVmcgpTf4gS0xbAd4zNd?= =?us-ascii?q?n8pI0e1CqHX+op7fYDerWKy3qZXUszEtYsUno6xxK4PsOdGKtJXAkTzDVJPQqB?= =?us-ascii?q?GKUDamF/pGndhdOC1YQONSlmEjJcwLootB6U0/V8c4O7xPCLcjprGsaTp4EyES?= =?us-ascii?q?1zUVV4We0zwemu28wafVlg+McJQ+NxwJqI9Ngt8cUyFqfCwRvKqjVoXQl2+DTG?= =?us-ascii?q?gEOhwe4h9N5A0akI98Z+7l4JfSQJ9K1TFWv+p+UjHXGZlw61v7VmaWjEDjR/q/?= =?us-ascii?q?leykxhhdw+/y0tYFQh5/ElJSx/xWl0cyL7F3MaYQtJbQsjCUbUP6oH7tyOy+KV?= =?us-ascii?q?lLz83UdkH3DIrCtWr4SS0S4WQaS5JVxnzDEpofiBZ2aKEupFpQOo+mYVr+6yYi?= =?us-ascii?q?x4t3A7myTdqryEo9rXYaWyeqFMJMBP1ksF3NRDJoeIykqJLhO5VWQ29f5oedq0?= =?us-ascii?q?tHn0pxMy61051cK9tC4jQURjhAvS2dvMeuSM1EwcJ2FYUDIs14u3jmA65EJIKR?= =?us-ascii?q?rGcourPxzn/Z+jY8sFi+xDWyFK+4T/5Z/2MEFQUzImSSsE8vAPUw8m3K6FDCrk?= =?us-ascii?q?h0//tHBriIlUhwrixxEYxOBjZI0HClLk58THpdvuVbNqvabdJTT+M1ZR+1NBw0?= =?us-ascii?q?DeQm0FCR/UFogXf5ZDR/thNd+yDZRQY0TycUgrDpmT0QscynPDgaS5VTbTo/cy?= =?us-ascii?q?jFMQWbmTtMvBZebUFqVIoVAtFf+7EUxYFU5NbNSV6wKSEZWxxvLhg30eBClU5F?= =?us-ascii?q?qkmYejvQDQupdfbOrh14Zt2drMi3I/Tl5A1HkJ/osPgk96UfQH2rgRGtQdfbr4?= =?us-ascii?q?Lnqt2Gqk6Oe7ziP+26f3DBUCDGjQqsirc8E5nK4y/TPRJbK5Zg03ore5zhBnPQ?= =?us-ascii?q?MBtbOa0bP1JbWr5+adpYuOBWfchkeLwG+aV1HBKIWgvvGJCzrPlBNlvTRzPeID?= =?us-ascii?q?ua/+Oiv43T9qLSSfL8ZsOS2nnLWaR3MYlm6TPjAbflzZde+lbq2vdq7k51UlbG?= =?us-ascii?q?PDydoNnjOw8G6tKveVflvp0sATzZGoxwkGb3ykFGacUXXzWg8I4Ex5NB9HbwVe?= =?us-ascii?q?V431DpsOJM6rZk6ZM446xyxMewIqfSN+pVvVF7DRiTGwpl6I8hAG5hSGBNeuUR?= =?us-ascii?q?MuvefbwFjcDyrOD6D7QX6AaJ++NDdNTHO1rMmtK4CjGBUxxLgBkOqTgGLguGzf?= =?us-ascii?q?GFn7V4ScG/pej2wkgt+USxLgYazLBx4oeJ4raIpPXJYBTP0LcJQbXqRsfvrrQ2?= =?us-ascii?q?oUyS+/wklLkKemNrfw2rCu8dVtQSxm3416Al0TosE9/fH7Ln4PNDUmg2njbkm5?= =?us-ascii?q?9jA1UWBukbEqCQ8IRYgGg4h/fZOcEMfaBahGmDDxikHaEeyXSz8SuYPHFlgg3S?= =?us-ascii?q?0xH3WW6z7kX5rTV/QSvXy9fsiFRVW6KyBUdPWyqpJU54vy+OPAXystr3or457E?= =?us-ascii?q?YsMmzrrNiNjneuOKtLH83jI9yROSs0q0gRjJ0/XNyv3p0UFsSmLdcN6n5+aODe?= =?us-ascii?q?62Sxny9HvahHm5LU4tuJ9fXPAXmgk6qapq2CxDBFy3g4uVU/5c6lNvzV+tKFXe?= =?us-ascii?q?+n12cLQCd5oQfBWAS1qrPDpVAOJUOLyFvLmJANPtxB23k40lrr5OklQNI27gle?= =?us-ascii?q?F4DAZ/0YpT/pIzv03UyfY88rWSmCzjtXBEz6HUN/GKgm12L6pNjJmmvI+100Wo?= =?us-ascii?q?lwcFTqhRlwD4U+NUIt50YYzzEGEQgMcx+bCq+nBVjrLIsDT0gDag+H0KK8eqgp?= =?us-ascii?q?wU152qmv6/PLbexgG6oNMe5QjgqVnFheGp8bqqMeT6xhdF9a7q7YvBDiC5LgX/?= =?us-ascii?q?jki3U/KeG1Ttpd8cADuHso+hy/SAa46Zdf87Ybj4iFdrVebpjSps984Flo5SUU?= =?us-ascii?q?eyxWmhd/kQm2Ue8Cq+D4+NTbtoSn6vq2XqY3W+oX7wQ0B3h5j5boglAjoNTX2v?= =?us-ascii?q?xZSoLLiYXw7hpNI3+MuIbVyRV8L/QBK56zdrZ663oHPzQeJ24JPdeOavk94jVi?= =?us-ascii?q?Py/P6FFZGcMDe88YM9TRlgxOjU3pQr5T/NLBGlCEE4dza9wo723vxT8u8Js8Se?= =?us-ascii?q?jh5yW0JZDe81FNJ+lMjDholN/ZuOcVxufdBzYN7nmEcRh1xTmCxIOXB/b35+WM?= =?us-ascii?q?x8neV0kaES4uT4ddOD2C9BS/RuWviJXmTgOU68H0gJIkd0KcX2exk7oBsqZNF+?= =?us-ascii?q?5Alyr60yNGFo/vm/Kar9qs6WVQtl1dE4Z/9x7FF7tFPpV9Jxv4ktOnRk9mBivw?= =?us-ascii?q?YMvUbAYhuPKKxucQ5OVzL1f+ZZUFLRIA0b3672RaQxBzR773sVaZXP4Ra8F9SP?= =?us-ascii?q?zetHBV9JhsK6kRM1iBvJbqtCtHqEgqAA81b789tjNaeVPUnAJLR6b0uKUNig8d?= =?us-ascii?q?Ud5lp0BMGXi/OH8l5zbdU6RakrWRAuQP8jqPVqwOT1loMiRmThO6xppufaepnf?= =?us-ascii?q?dAsm9BhSNyvvwq0z1gRBuhtizhvKYN1iw6+LC4rjoNo3pFQfuCky3QE1VM0OwK?= =?us-ascii?q?jbsAC3bl8VG8ZngDY5f14LljP8vg7pMt43U4YRUkZC0GRv+tCyT/gqKHGICPt8?= =?us-ascii?q?hchBGVssXUcbCzNTQSNqg6yR/7SHhyzhPenA1x/GUWTTuu6t4kJIOgOccq3Seo?= =?us-ascii?q?Fm3be0wK4qxXqsfxskQLTOQuY1N73GpjytSHRjEKRMHXGWY1iQgkaWNefJ1f6R?= =?us-ascii?q?8aE7QojSuJv6lH+AEUezTUEoW+94nOnMfIx2MyTdN3yWLXvKGFgI0l0GF9kdNu?= =?us-ascii?q?8iGOoGgSd/DfU8J0A3jzyJ1QyerlavWpr+AIVYpmyLO6UPMYNcmj42S20o1wWk?= =?us-ascii?q?C53rQeA0a5MOgby7fZTSilR2OYWeCQfmmChTk5NFD95QWyIl0xdshKs1c3MvHe?= =?us-ascii?q?iZ5Eiw3hTbR0Sz2fpV/fy2wiP/0VdwYyuIq8YAwKS+gRZ+mAKuQ0xv0xFkcMZW?= =?us-ascii?q?fTHSRqE++2rUKtnI9jNnVi4UX7Yfzt8gfiMNuTBhkLD5XXrptw+fymXGKOJ2Vs?= =?us-ascii?q?zBpoPEl77+3fDUg+tvdAc5aNmtjdn8h70e8Ad/p2LS09u8IcmoF95omQysuKdw?= =?us-ascii?q?/ezorqL9HPvveYG+Hfz1gtemxCV7oZYAD154Y9PtMiWb3cB7hZvRMaBackRpwt?= =?us-ascii?q?LWHx+79oLAlraA7eeKy0gtX2puKMfpZbvGHZ7lQsLCrHoB0Dzvu0TRBnb5C0mX?= =?us-ascii?q?r9PYo8RjVbr91iEhFmBpdAG9scrwq7BJ6ZgK+7hMG1+0N7o+8Fr7H9C/HL1NS8?= =?us-ascii?q?2oV+QYJa5UiVMzrLA6lrmEtlhPyogvjcypnxFd/iedQcWel1Wm7FcL7GEZmhJT?= =?us-ascii?q?+VP8L8elJG86SC375jVRWRfi/5VbKctCK4LPVk/Vk7yotgcerUyDwi8arW2MP2?= =?us-ascii?q?Z25BvSejsX+JO4dD7FzQG+PRQQhYSfyb/2Z5BacXd5f79P8SMdw+x9iR+w1z7D?= =?us-ascii?q?VE0MuYLKmtt0vM2kNgdZLHN0vkwCc5VpMMIBS4K0cshnXZqnvFC3RGMsekMdVt?= =?us-ascii?q?gMqSDhH1/El+h2UtZm9HGmr1StadPmcV296+ZAKU7gJEEc4DkPSsdE47qKKyU+?= =?us-ascii?q?9oNYtBmeqxqbUHnsxlKybVRMhVJyvQNqN5PiJNDuXTo1glehsEvKIpVYc1ZJiO?= =?us-ascii?q?JkQHPVyeySPzywvNz0n0d92q1KaULyca6HJHz6jK0TJUvQm2pe6ZgtH/ULDedJ?= =?us-ascii?q?z2XuTdMCkiVj6BXjkyDECp+Uuku/oDofqYLmcfokwObiKUFgETurhlrcLMAW/L?= =?us-ascii?q?he1jYJoKieiVWy/qUyJ4jqsyCThPtU2XXfoDERPZb2TggGpBogCiIOFD/W79Zb?= =?us-ascii?q?2C2qVVQ/AWApdLcvCBQdvYfPdeJy0yljUYI+axZNvcoKw80l3WTGsVCa7I9EeR?= =?us-ascii?q?TESOWPyT2yrrXZkJv4gzoico4dzQniprHKnJPLuSvCCu/ZCijCaZuOzeUW8tb1?= =?us-ascii?q?YzgO0cHGnSiCVHfVopL9ATpVGlZq+bew4Yz38tiORzyzcQaQ9zVTtoyXQQk/Gj?= =?us-ascii?q?TJ53U1kR2ViyTeMLJHR+Eyk9+0SHqlnpZdUfo83VTGJ26qEBUpsGavIv7d+Ea+?= =?us-ascii?q?Mr3P810Wc+82QBuCKHAgYY11vd/g=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2GYAQAlFDBZ/wHyM5BdGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBgwErgW+Of6kCKIh4VwEBAQEBAQEBAgECaCiCMyQBgkgCJFUDC?= =?us-ascii?q?QIXMQgDAVkTBYgdAzOBUq5wOiYCi12GYYFgjXoFiUiGY41+kx4NiyKGVQKUV1i?= =?us-ascii?q?BClEjhREMRBwZgWZaiW8BAQE?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 01 Jun 2017 13:24:08 +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 v51DNw4T014585; Thu, 1 Jun 2017 09:24:02 -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 v51DNuc9087615 for ; Thu, 1 Jun 2017 09:23:56 -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 v51DNuME014580 for ; Thu, 1 Jun 2017 09:23:56 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1D6AwCVFDBZ/6u/HthdHAEBBAEBCgEBgywrgW+4CByIfVcBAgEBAQEBAmuFboIQE4giAzOBUpxykXc6jAUJAYZXgWCNegWJSIZjjX6THg2RdwKUV1eBClEjhRFQHBmBZiQ2iW8BAQE X-IPAS-Result: A1D6AwCVFDBZ/6u/HthdHAEBBAEBCgEBgywrgW+4CByIfVcBAgEBAQEBAmuFboIQE4giAzOBUpxykXc6jAUJAYZXgWCNegWJSIZjjX6THg2RdwKUV1eBClEjhRFQHBmBZiQ2iW8BAQE X-IronPort-AV: E=Sophos;i="5.39,279,1493697600"; d="scan'208";a="6074533" 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; 01 Jun 2017 09:23:53 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3ARIOrQBSfWquKQzpK6nGW2kz27dpsv+yvbD5Q0YIu?= =?us-ascii?q?jvd0So/mwa69bBSN2/xhgRfzUJnB7Loc0qyN4v+mBT1Lv8/JmUtBWaQEbwUCh8?= =?us-ascii?q?QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFRrlKAV6?= =?us-ascii?q?OPn+FJLMgMSrzeCy/IDYbxlViDanb75/KBe7oR/eu8QSjodvK7s9wQbVr3VVfO?= =?us-ascii?q?hb2XlmLk+JkRbm4cew8p9j8yBOtP8k6sVNT6b0cbkmQLJBFDgpPHw768PttRnY?= =?us-ascii?q?UAuA/WAcXXkMkhpJGAfK8hf3VYrsvyTgt+p93C6aPdDqTb0xRD+v4btnRAPuhS?= =?us-ascii?q?waLDMy7n3ZhdJsg6JauBKhpgJww4jIYIGOKfFyerrRcc4GSWZdW8pcUTFKDIGh?= =?us-ascii?q?YIsVF+cPPfhWoZTzqVUNqhWxChWjCfjzyjNUnHL6wbc33/g9HQzAwQcuH8gOsH?= =?us-ascii?q?PRrNjtKakSTf66zLfWwj7eaf1Zwzn86JLWfRAnvf6DQ697fM3KyUkrDQzEgE+Q?= =?us-ascii?q?ppLjPzyJyOsAqHSb7/B+WuK0i28nsBt9rSSoxscpk4TEgJ8exFPc9Shh3oo5ON?= =?us-ascii?q?y1RFR1bNK4CpdcqiWXO5ZsTs8/QWxkpSA3waAct5GhZigF0pEnygbfa/OZd4iI?= =?us-ascii?q?5QruW/ieIDhkhHJqYrS/hxms/kS91uHwTNW70FFOripYl9nDrXEN2AbJ5sibUP?= =?us-ascii?q?ty4Fyh2DaU1wzJ9u5EJkU0mbLaK54n3LEwioIevVreEiL3gkn7grOael859uWs?= =?us-ascii?q?9ujreKjqq52BO4NsjwHxKKUumsixAeQiNQgOWnCW+f+41LL580z5WqtFjvsqna?= =?us-ascii?q?bHq53aOd4bqbCiAw5VyYYv8QqwDzCj0NgAh3kIMEpFeA6bj4juI1zOO+73DfO+?= =?us-ascii?q?g1SqjTdqyOvLPqHhA5rRLnjDl63tfbBm60FG0gYzwtdf54wHQo0Gdcnefk73qc?= =?us-ascii?q?yQKh4iL0Tg2OvjCdNgxqsCSGmPBemfK6qUvliWsLEBOe6JMbQJtSjwY9ws+OTj?= =?us-ascii?q?i3Q00QsGeaC2x5YRY32QAu5rOFSCJ3Hrh4FSQi8xogMiQbmy2xW5WjlJaiP3Bv?= =?us-ascii?q?pk6w=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0EiAwAlFDBZ/6u/HthdHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBgwErgW+4CByIfVcBAQEBAQEBAQIBAmgogjMkAYJughATiCIDM4F?= =?us-ascii?q?SnHmRdzqMBQkBhleBYI16BYlIhmONfpMeDZF3ApRXWIEKUSOFEVAcGYFmJDaJb?= =?us-ascii?q?wEBAQ?= X-IPAS-Result: =?us-ascii?q?A0EiAwAlFDBZ/6u/HthdHAEBBAEBCgEBFwEBBAEBCgEBgwE?= =?us-ascii?q?rgW+4CByIfVcBAQEBAQEBAQIBAmgogjMkAYJughATiCIDM4FSnHmRdzqMBQkBh?= =?us-ascii?q?leBYI16BYlIhmONfpMeDZF3ApRXWIEKUSOFEVAcGYFmJDaJbwEBAQ?= X-IronPort-AV: E=Sophos;i="5.39,279,1493683200"; d="scan'208";a="7645924" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from exchange10.columbia.tresys.com ([216.30.191.171]) by emsm-gh1-uea10.nsa.gov with ESMTP/TLS/AES256-SHA; 01 Jun 2017 13:23:52 +0000 Received: from amos.columbia.tresys.com (10.1.13.136) by Exchange10.columbia.tresys.com (192.168.243.126) with Microsoft SMTP Server (TLS) id 14.1.438.0; Thu, 1 Jun 2017 09:23:26 -0400 From: Steve Lawrence To: SELinux List Subject: [PATCH] libsepol/cil: better error message with duplicate aliases + support aliases to aliases Date: Thu, 1 Jun 2017 09:23:24 -0400 Message-ID: <20170601132324.15217-1-slawrence@tresys.com> X-Mailer: git-send-email 2.9.4 MIME-Version: 1.0 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 - If two typealiasactual statements exist for the same typealias, we get a confusing error message mentioning that the actual arguement is not an alias, which is clearly allowed. This poor error occurs because the first typealiasactual statement resolves correctly, but when we resolve the alias in the second typealiasactual statement, cil_resolve_name tries to return what the alias points to, which is a type and not the required typealias. This patch creates a new function that does not perform the alias to actual conversion, used when we want an alias and not what the alias points to. This allows the cil_resolve_aliasactual to continue and reach the check for duplicate typealiasactual statements, resulting in a more meaningful error message. - Add back support for aliases to aliases (broken in 5c9fcb02e), while still ensuring that aliases point to either the correct actual flavor or alias flavor, and not something else like a typeattribute. Signed-off-by: Steve Lawrence --- libsepol/cil/src/cil_resolve_ast.c | 48 ++++++++++++++++++++++++-------------- libsepol/cil/src/cil_resolve_ast.h | 1 + 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/libsepol/cil/src/cil_resolve_ast.c b/libsepol/cil/src/cil_resolve_ast.c index 5c26530..fc44a5e 100644 --- a/libsepol/cil/src/cil_resolve_ast.c +++ b/libsepol/cil/src/cil_resolve_ast.c @@ -515,7 +515,7 @@ int cil_resolve_aliasactual(struct cil_tree_node *current, void *extra_args, enu goto exit; } - rc = cil_resolve_name(current, aliasactual->alias_str, sym_index, extra_args, &alias_datum); + rc = cil_resolve_name_keep_aliases(current, aliasactual->alias_str, sym_index, extra_args, &alias_datum); if (rc != SEPOL_OK) { goto exit; } @@ -530,7 +530,7 @@ int cil_resolve_aliasactual(struct cil_tree_node *current, void *extra_args, enu goto exit; } - if (NODE(actual_datum)->flavor != flavor) { + if (NODE(actual_datum)->flavor != flavor && NODE(actual_datum)->flavor != alias_flavor) { cil_log(CIL_ERR, "%s is a %s, but aliases a %s\n", alias_datum->name, cil_node_to_string(NODE(alias_datum)), cil_node_to_string(NODE(actual_datum))); rc = SEPOL_ERR; goto exit; @@ -539,7 +539,7 @@ int cil_resolve_aliasactual(struct cil_tree_node *current, void *extra_args, enu alias = (struct cil_alias *)alias_datum; if (alias->actual != NULL) { - cil_log(CIL_ERR, "Alias cannot bind more than one value\n"); + cil_log(CIL_ERR, "%s %s cannot bind more than one value\n", cil_node_to_string(NODE(alias_datum)), alias_datum->name); rc = SEPOL_ERR; goto exit; } @@ -4122,6 +4122,34 @@ static int __cil_resolve_name_helper(struct cil_db *db, struct cil_tree_node *no int cil_resolve_name(struct cil_tree_node *ast_node, char *name, enum cil_sym_index sym_index, void *extra_args, struct cil_symtab_datum **datum) { int rc = SEPOL_ERR; + struct cil_tree_node *node = NULL; + + rc = cil_resolve_name_keep_aliases(ast_node, name, sym_index, extra_args, datum); + if (rc != SEPOL_ERR) { + goto exit; + } + + /* If this datum is an alias, then return the actual node + * This depends on aliases already being processed + */ + node = NODE(*datum); + if (node->flavor == CIL_TYPEALIAS || node->flavor == CIL_SENSALIAS + || node->flavor == CIL_CATALIAS) { + struct cil_alias *alias = (struct cil_alias *)(*datum); + if (alias->actual) { + *datum = alias->actual; + } + } + + rc = SEPOL_OK; + +exit: + return rc; +} + +int cil_resolve_name_keep_aliases(struct cil_tree_node *ast_node, char *name, enum cil_sym_index sym_index, void *extra_args, struct cil_symtab_datum **datum) +{ + int rc = SEPOL_ERR; struct cil_args_resolve *args = extra_args; struct cil_db *db = args->db; struct cil_tree_node *node = NULL; @@ -4208,20 +4236,6 @@ exit: *datum = NULL; } - if (*datum != NULL) { - /* If this datum is an alias, then return the actual node - * This depends on aliases already being processed - */ - node = NODE(*datum); - if (node->flavor == CIL_TYPEALIAS || node->flavor == CIL_SENSALIAS - || node->flavor == CIL_CATALIAS) { - struct cil_alias *alias = (struct cil_alias *)(*datum); - if (alias->actual) { - *datum = alias->actual; - } - } - } - args->last_resolved_name = name; return rc; diff --git a/libsepol/cil/src/cil_resolve_ast.h b/libsepol/cil/src/cil_resolve_ast.h index 82c8ea3..1d971fd 100644 --- a/libsepol/cil/src/cil_resolve_ast.h +++ b/libsepol/cil/src/cil_resolve_ast.h @@ -99,5 +99,6 @@ int cil_resolve_tunif(struct cil_tree_node *current, void *extra_args); int cil_resolve_ast(struct cil_db *db, struct cil_tree_node *current); int cil_resolve_name(struct cil_tree_node *ast_node, char *name, enum cil_sym_index sym_index, void *extra_args, struct cil_symtab_datum **datum); +int cil_resolve_name_keep_aliases(struct cil_tree_node *ast_node, char *name, enum cil_sym_index sym_index, void *extra_args, struct cil_symtab_datum **datum); #endif /* CIL_RESOLVE_AST_H_ */