From patchwork Wed May 31 18:06:33 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Carter X-Patchwork-Id: 9757915 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 ED81F603F7 for ; Wed, 31 May 2017 18:14:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E6AC8274D0 for ; Wed, 31 May 2017 18:14:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DB588283C9; Wed, 31 May 2017 18:14:45 +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 BA697274D0 for ; Wed, 31 May 2017 18:14:44 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.39,275,1493683200"; d="scan'208";a="7615316" IronPort-PHdr: =?us-ascii?q?9a23=3A2qf2HBNdkfg3Nxte0wUl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0LP37o8bcNUDSrc9gkEXOFd2CrakV1KyK7eu5ADxIyK3CmUhKSIZLWR4BhJ?= =?us-ascii?q?detC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBxrwKxd+?= =?us-ascii?q?KPjrFY7OlcS30P2594HObwlSijewZbF/IA+5oAjQucUanJZuJ6UswRbVv3VEfP?= =?us-ascii?q?hby3l1LlyJhRb84cmw/J9n8ytOvv8q6tBNX6bncakmVLJUFDspPXw7683trhnD?= =?us-ascii?q?UBCA5mAAXWUMkxpHGBbK4RfnVZrsqCT6t+592C6HPc3qSL0/RDqv47t3RBLulS?= =?us-ascii?q?wIOSQ58GXKgcJuiqxVrg+qqxhmz4LKfI2ZMfxzdb7fc9wHX2pMRsZfWTJcDI2y?= =?us-ascii?q?bIUBCOgOPehAr4T/ulcDowWxBRK3Ce/z1jNFnGP60Lcm3+g9FwzNwQwuH8gJsH?= =?us-ascii?q?TRtNj7ML0dUeWrw6nT0D7OcelZ2S3h6IfWaBAqvPaBXbB+cMXN00YvDR/FgkuL?= =?us-ascii?q?pIz5PzKayuQNs2+B4+pmTuKgkXQrqw52ojix38ohjJTCiIENyl3c6Cl0z4k4Kc?= =?us-ascii?q?e4RUJme9KoDpRduz+AO4drRM4pXntmtzwgyrIcvJ62ZC0KyJM6yBHBc/GHaI2I?= =?us-ascii?q?4g77VOaWPDd4mGppeLKhiBa29kit0vH8WdOu0FZLsypFicPAtmwN1hPP6siHTe?= =?us-ascii?q?Fx/kG91jaUyw/f8OREIUEwlabDKp4hxKA/loYLvEjeESL7l1/6ga+Lekk+5OSl?= =?us-ascii?q?5Prrbq/7qpOEMo97kAD+MqAgmsylBuQ4NxADX3OF9uS41b3j+1D5QbpTgvItla?= =?us-ascii?q?nZrZbaKtgFqa6iGAJVzoYi5Aq/DzehytgYm2IHI0hfdBKIiIjpJUnCIOrkAven?= =?us-ascii?q?n1SsjDBryujEPr3mBJXCNGTDkLf7crZ78ENcyg0zzdZa551OEbEBPOz8WlXqtN?= =?us-ascii?q?DCCR85KQO0yf79CNphzoMeRX6PAqiBPaPQs1+H/P4gI+qXZI8Svjb9KuYl6uXg?= =?us-ascii?q?jX89hF8ccrKm3YYRaHCkA/RqOUKZYWDjgt0ZC2cFohI+TPD2iF2FSTNTf2i9UL?= =?us-ascii?q?ki6TE9CYKmEYDDS5usgLOfwii0AIdaZmdcClCDCX3obZmLW+8QaCKOJc9siiEL?= =?us-ascii?q?Vb+nS48nyB6hqgv6y7t8I+XO5CIYr5Xj2MJy5+3JmhE47SZ0ANiF02GRU2F0mX?= =?us-ascii?q?sFSCIq3K9lu0xw0UuM0a99g/NED9NT/O9JXh08NZHC0+xwE8ryVR7ZfteVVFam?= =?us-ascii?q?Rc2rATA3TtIt3dAOZ1hyG9C8gRDfxSqrA6QYl7uTBJMq9KLc2mL+J8d5y3nd06?= =?us-ascii?q?kggEMqQsxVNW2pnqR/7RTcB5bVk0WFkKanbaQd3S/K9GeF1meOuUVYXBdxUaXD?= =?us-ascii?q?R3wfYFHZrc765kPDUb+hF64rMg1fxs6eMqFKcMHmjU1aRPf/P9TTe3y+m3+qCh?= =?us-ascii?q?aSx7OMd5Hne30H0yXHCUgEiBgT/XKcOgciGCituWXeDCZhFVj3eUPj7fF+qG+n?= =?us-ascii?q?Tk8z1wyLYUxh176w+hELn/yRUP0T0awZtycmsTV7Bk6938jRC9qCuQVuYLlcbc?= =?us-ascii?q?k64Fdd2mLTrxZ9MYC4L6B+ml4edBx6v0301xptDIVPjckqrGgxwQp3MaKY0UpN?= =?us-ascii?q?dyiW3JDrILHXLXPy/B+3Ya7Mxl7eyMqW+rsI6PkgqFXspgKpFk0/83h80NlayX?= =?us-ascii?q?ic5pLXDAYIVpLxSEk3/QBgp77Geik9+5/U1Xp0PKaurzDCwdMpC/U/yhu7ZdhQ?= =?us-ascii?q?LKaEGBX1E80ACMikMPYqlESxbhIYIOBS87Y5MN+8ePuCxqGrJ/pgnTKhjWlc+4?= =?us-ascii?q?ByzkOM+DR6Su7U3pYK2euU3g2ZWDfglF2hqNz4mZhYZTEOGWqy0TPkBIBLZq11?= =?us-ascii?q?ZoYLFXyjI9axxtV5iZ/tXmRX9Fi5C1MAxsCpZQKYb0bh0g1IyUQXvXunlDO2zj?= =?us-ascii?q?NulzEpsrSQ3DbVw+n5ahoIJHRLS3J/jVfpO4S0iMoaXEewZQgziBSl/Vr6x7Rc?= =?us-ascii?q?pKlnM2ncXFpHfynsIGFmSaa/qr2CY8tT55wyqiVXTP6wYVaERb7huxEayT/sH3?= =?us-ascii?q?NCxDAncDGnoov5nx1mh2KBK3ZztmDVdt1wxRfY4tzcSuVc3j4HRCl+kzbXHF+8?= =?us-ascii?q?M8Ou/dWOmJfJqvq+WH65Vp1PbSnrypuNtC+65W1xHR2zhuuzlcPjEQg71y/7yt?= =?us-ascii?q?ZrWD7TrBbkY4nr0aW6Pv58fkVyAl/z9dZ6EJlkkoQsnJEQxWQahpKN8Hodlmfz?= =?us-ascii?q?NdFb1rzkbHURQj4KzcXY4BP42EJ/NXKF3YX5Vm+SwsF5fdm1fnsW2j4h78BNEK?= =?us-ascii?q?qU9KZLnTZxolaitw3de+NynjAZyfsy734ahfoEuA8xwiWbBbAdAVNUPSrymBSU?= =?us-ascii?q?99q+trlYZH6zcbis00pzhdOhA6+EogFHQ3v5eYktHSlr7sV5Ll3MzGf/6ob+eN?= =?us-ascii?q?nfddgTrAGbkw/cj+hJL5I8juIKijB6OWL5o3Il0/Q0jRpy3Z6kpoiKMHht/Lmn?= =?us-ascii?q?DR5CLT35fdgT+jbwjaZEgsmZwY6vHpJ7GjUEQpTkV/SoHywOtf7/LQaBDCU8qm?= =?us-ascii?q?uHGbrYBQKf9kFmoG/UHpC1MXGYOXkZwc9kRBaDOExVmBoUUykinp4lCgCqw9Ts?= =?us-ascii?q?cF9j6TAM4l71sQdDyuN0Nxj/S2vfqh2najEuRJiYNhpW4RlI513JPsyG8uJzAy?= =?us-ascii?q?ZY84WirA2NLmyUeR9FDWQOWkyKCVDsIKWu5cXA8+ifA+qxMeHCYbOQpuxCT/2I?= =?us-ascii?q?346g0pN6/zaQMcWCJndiAOc92kpfWnB5Ht/UmzsRRCMKkCLNddSUpA+m+i1wrM?= =?us-ascii?q?Cw7ujkWB716YuIEbtSPs1l+wqqjqebK+6QmCF5JC5C1pwR2HDF07cf3Fsdii10?= =?us-ascii?q?cTmiD6gAvzbXTK3Mgq9XEwIbayRrOctS9a490BNBOcvBhdPx0b55juU4BE1ZWl?= =?us-ascii?q?zkgM2pYtYKI26lPlPdGEmLLKiGJSHMw8zvb6O8U6Nfg/hPtxKqvzabD0jjPi+Y?= =?us-ascii?q?mjbzSx+vNPtAjCaBPBxRoIu9aApiCXD/TNL6bR22KNl3jScszr0snnPHLmAcMT?= =?us-ascii?q?lmc0NWsr2Q4yJYgvNlFGxH8nVlLPOLmyKD4+nfMJYWvuNhAj5omOJC/HQ617xV?= =?us-ascii?q?4TlZS/xuhiTdtNFuo0u8nemR0TdnSwBBqjVWhIKRp0puI6HZ9oRGWXne5hIB9H?= =?us-ascii?q?mQCxMJp9plDd3joaZQxcbTlKjrMjdN78rU/dcAB8jTMM+HNnshMR7tGDHKFwsI?= =?us-ascii?q?ViSkOn/Fh0xaiv2S8WeVrpcioJj2hJUOUqNbVEAyFv4CEUtlHdMCIJBxXj4/jL?= =?us-ascii?q?GUktUH5XukoxnXXslauYrHVv2KC/X1NDmZlaVEZwcPwb7gN4sTOZf021J8ZVRh?= =?us-ascii?q?m4TKA1TfXdZIoiJ7bw80pF5C8H9xT2Ep3ELlcAyt6mcJFfGohh42lhd+YeM1+T?= =?us-ascii?q?fw5Fc3I0DGpDE3kEgwh9rlhyuecCT2LKiuXoFbEDb7t080MpznWQl1dhGykVZi?= =?us-ascii?q?NDjaW7Jbl6FgenxziA/ApZtPHuZRTatabxAKwfGafPYo0VNHqiW730BH4/DFCZ?= =?us-ascii?q?hjlAcwd56jsW5A0Rp5bNEpPazQOLZJzl9Ii6KUoCCozf4+zxUEJ0kR8GOfYzUH?= =?us-ascii?q?uE0SNrY7ICqo8PRs6RaclDpDYmQMUeQlou5y/EMnJ+uA1z7g06JEKk2pKuOQNb?= =?us-ascii?q?2Zu2ndms6TWV4/zFkIl1NC/bl4yscsbVabV101zLuQCxQINdDOKQdLYMpO7HLT?= =?us-ascii?q?ZzqBsf3RwZJpOIWwDuToTeiUtKkKhEKlHQEpEp8D7sQHA5mgykbYLd3oLLQd0x?= =?us-ascii?q?Ui+BzrJEmZDPROYB+LiykIo8W+zJ9xwIlcKSoQDnl6MSWy+rnYvBQqgOaZUNcw?= =?us-ascii?q?fHgaQpMONmgqV82ihy5Zo3NAASGq3e0FzQiC6Dn8pjjNADTncdpseu2UZRJtCd?= =?us-ascii?q?Gx/zUz6a62hkDL8p/GPWH1KcxiusPT6eMdv5uHCOlUTLlnvEfah4lYR2enU2HI?= =?us-ascii?q?Ed6tO5f8cY8sYsLoCnyiSFywlyo1T9vtPNaqNqWInQDoRYNTsImH3DAiNdSwGS?= =?us-ascii?q?wfGxZwve4M/7hwZQsdbJoneRTorRgxN7SjIAeE1dWjW2mtKSFMQPlZ0eW3fL1X?= =?us-ascii?q?zy0ib++81HsgTo81z+ix8U4RWp4KlAvSxfC9aIlCSSLzAGBSex3TpSolkGhsLv?= =?us-ascii?q?w9wuM+wBzUr1YTKzWLdexvaGxDudEzH0ifLm53CmUiQV+QlITD4hO207AU4SRd?= =?us-ascii?q?g85e0fdZv3jmop/ffDWsVbSwpprLtSotdsIprLBvMYP9OMuGr4nRnibfTZXKtQ?= =?us-ascii?q?2FSiG6HeJAmtdMOCJYXOVImWY9NMwcv4pB6FY+Vsc5J7xLE6kivqmkZyd+AyMO?= =?us-ascii?q?yiEUTJ+P3DsHguigwbTajQuQfI4kMBMarJVImsEdXDJuYiMCuK+jUJ3bmHOGSm?= =?us-ascii?q?cRPAge9hhD5AUElo90f+Dq/pDITINSxDFKo/J4SCzLFoNn91HjUGGZnUD4SOm9?= =?us-ascii?q?k+yuxQ9S1ujj0sMcWBFkEkVd2/xWmVE2KL5pL6kQv4jKsjCMdUP7s2LtyPemJF?= =?us-ascii?q?dLxs3Ocl30FozFunTgUicE430bWZdPyG3DFZQViwd4Zrwnq0lMIICnf0b+5iYr?= =?us-ascii?q?x4dyErm5S8+k2UgqoWwBRyewHNpLE/tmv07PWD15f5Crr43oO41VQm9U4pKdsV?= =?us-ascii?q?lYkEJpMy630pdcLsZN4jkXXDdRvTqdptyySNZY2c93CZ8MLc1zu3DnGKNLIJKR?= =?us-ascii?q?uWE5uqTzyn/F/DAxqE21xC+uG6++Ve5Z/HYTGgQoJ2SftkkgFPEg8mHM/VDRql?= =?us-ascii?q?p05ftUBqCTjUVtpzZwBoxOBjFM1X2+M1R/UHxGvP5AJKTTbcNcX+E4ZQWzNBwm?= =?us-ascii?q?Cf4mw0uJ8Fl0nXjjeSx9rA9a9D3GUgYpSyYVmq/tliMaqs65Iz8WUZVIbS8uby?= =?us-ascii?q?3dMQKUhThXvApDa0FtQ50ZANFF9K8A0IRJ4MXCUlijKTsZXBN8Kw00y/xfmlBf?= =?us-ascii?q?sE+AYyDSERKoderTsh1wZcqet8CpI+jl8ApFl4/qvvs1+LkER32jhQKiW8ver5?= =?us-ascii?q?Pmut2MqESOaL/yM/egbn/ZUDjMkRewiK8+D5bU4ifTMBBUK4VhxHogZpjhF3DE?= =?us-ascii?q?MQpaKKIcOkVUS7p2adNYreBGf8VkYroG+bdxBhKbQRPiAJSvrOJaLlnJWDveMz?= =?us-ascii?q?6M8ve4oYLO97zSVfbvZsqQx3bdWa13Oo126T7hG7flyYVe4Fb52u9x9kNmTljL?= =?us-ascii?q?KzyBrM7/KQwV+cavbVbivpk1HTPMGphwjnvtxkZEd8UJXy2m6pMYyIlW6HzoU+?= =?us-ascii?q?J3zlDzsPFO97lj8YQ35qpmycOwJajMNfRarVVoDQKPCwVs6JotHHN/SHxLbe8J?= =?us-ascii?q?NvjdZ6IZgt7yq+rvDawY9AWV+/BFadvAP0zBmNOwCiubSRxfmAcOsyAaIxCZ1/?= =?us-ascii?q?6Yn690VcelqvT42k035Vi+NQQKzLd35YeL4qCIvvPYbwPNzbgYXajnXsHzoa4q?= =?us-ascii?q?u0Oc//0kk6MBdXJubg27CucdUNUdxmD6waAs0y0sD9vJH6j89/5bS3I5gjXglo?= =?us-ascii?q?hyH1ULG/MUGb6L8ppbnmojhuPWKMYZcqFYlWaJDxKkFaUCyXGz4SuNPGZlmg3O?= =?us-ascii?q?0w33QW6r6l/2qTR1QSrKz9fmiEZVV7+3BUlIXyWzIk94rCmPPBf0u9rrpKQ19l?= =?us-ascii?q?85PnbjtNKXm2urIKlXENHnJNyAPSk0o0oajJg2RtypxYAbFsSyLcwU8HF/dPTe?= =?us-ascii?q?7X2kkzNPoqdAnYre4dqV9u/RHXa+k62Qs6+NyyxAyngkoVE/7citNvXV592PQ/?= =?us-ascii?q?mlzGgRQDlitAvGRR66sKTbr0oTOUyJzkjEhJAKMste3Xki2UHs/PIjT84r9AVC?= =?us-ascii?q?CobAYOsPpSvpNzvq21mfbMw4VjKF3jtMBF31D0N3GKci12Lrps7Jk2nf+0EwTI?= =?us-ascii?q?lqa0PnnQB3D5k/KU816lgXwy8DHBMIaR+FDLCnG17lLYoCVUgMcxiH2qa1ersv?= =?us-ascii?q?101p3ryv/PPTbfB7B6cVN/ZcjxSBk0JHFZ8Nqq0RXq58dEFB+6LNoQjiEYfnVe?= =?us-ascii?q?D8lXUsLf21Xtxa8ccBunQ54wa/XBSh5o1B77YalJCIbrRLYYXIvM1n80hn4iMA?= =?us-ascii?q?eTJXjxhilRO5Vvocq/r57tjcqpqo5f6kVLwxSOUP6xg0G2N+goPogF85vdHYy+?= =?us-ascii?q?dcS4PSiYTl8wBBOmWKt5je0xl9L+oONo2qca1493odOygRO3IOPNSRa/km4C9h?= =?us-ascii?q?KjbT6EJYAsMKe9wYONDBmQdOik3mQLtT7NbUGkeEC4dvcMAl93b3yCor/ps4SO?= =?us-ascii?q?ng7iG5KIvC4FFMMPNDjTlsm8jZpOcP2/rSFTIb4X+HZBhp2imC0YWCC+7s/eWQ?= =?us-ascii?q?z9HZT1wGETQsU4hDODqC+ReqRu60lJX1TAyU6tX8gI8ldE6KQHy+grgFuL5WEe?= =?us-ascii?q?FckiX7wiReFoftivKardWs7ndXtlpAEIp09h3KBqFfPpR9ORTlmcimXUx8CTXl?= =?us-ascii?q?eMDUbBUiouyWyfkQ4+9mLUvxeZcbIg4Yy7L98XdVSApuR6LxvladR+0Rf8FqSP?= =?us-ascii?q?LDrnBS8oJgMLQCPF2SqZ3ltDtIr0o2AAAxYr8qsjNablXOnBFSW6vst74PlhAc?= =?us-ascii?q?UcVgtUFRFmy+PmM+5zzaVaVal6SRB/kV/S+VTqMQSUloNTl+Qxyt0pV0Z7Sphe?= =?us-ascii?q?xHsn9Bni5lovgq1DxmRB2mtSLwp6IN3S8g96y5tTUAv3xFVeaekybTBFVdzfQK?= =?us-ascii?q?k70TC3L/5ly9enUDapX94KV/L8T66YYh+2g/YQkkfyAeXOSgFTv/j6WTD4yLrd?= =?us-ascii?q?JTmR+NuMLVbbOpKigSLLs9wwr5R3dhygjegApo8GwTTzWi8tAkKou9OcI+yyum?= =?us-ascii?q?A2fbckgD4r9TvMv3q1ELUPM8aUl9z2V7zsiHWioNSdTAG2YxiQglZ3tLcJZH6R?= =?us-ascii?q?IBDKkohTCIvqha8Q0OZjfbDJil8JHKncjUwXk9UctqxmXOq62HhpMr0GVlm9Rw?= =?us-ascii?q?7i6PpHQdaffVU8ptAnjvzIdQ1/byZ/K3suAIUIFm0qiuUOceMsm//mu7wIlqWk?= =?us-ascii?q?6gxrkFA1q5MfMMxrTFXCehU2GYX/qEc3SUlTYjLkHy/QWoLkEwaMpSqk89M+jC?= =?us-ascii?q?hp1blwD6U7N7XCaQpVjdzGM9N+MWbQQ2t5m7ewYSVu4ee/CcJfQywP05EFYDdG?= =?us-ascii?q?HGHS1qC+Ktql6tmI97O2l84UXkf+vi7xrqMNyIGhkLCYTatIJ++eSmRmKdPn9t?= =?us-ascii?q?1BNyM1dw9+feD1Q+qPRRcpeQndjVgtR0z/QFd/NzPiEnvd4TgI1j45GO0MiWaR?= =?us-ascii?q?HR0oryJdbNr/mWG/3f1UUqdX1EXbcCZAP15pk6PsQnVLHJGrtZpxscD7AgQJM9?= =?us-ascii?q?L2fx6L10LARrfw7WYLS7nNLnpvqPZpROvH/W8lMwIzvAux0Z1PO7UxZ3b5a0iH?= =?us-ascii?q?XuOJowXC5Or8VxCht6G4tCA8cArwuhA56Jl6C3ktux+0Jhu+8Wqqr9EfHK286/?= =?us-ascii?q?34V2RZRa4laLPDnJDqlxnktllviyguvH0pTpEsPtZ9cEVOl9Qm7YZb7KGYqxKi?= =?us-ascii?q?6OOs3iYU5J7aac36hiXxWSei/5RayGuzOgNPp//EU7xZZ0fO3JzDwi97vbwsf9?= =?us-ascii?q?Z3lHpie/qn6ELJ5f40bWCuzeXhJUT/2F/X17Ha0Wa4v76uMOMd0kwNiB7Ah/9j?= =?us-ascii?q?NC0NGKI6K5tE/Dxlp7dY7HLEvuwys5W5MFIBe4MUQ3mmLZt3LdAWhcLsijNMlt?= =?us-ascii?q?j9aVDgD360l3h24tenZLGnD0SteJJWgbx8W+aRWR+w1QCNoDm++3eVUktq2pU+?= =?us-ascii?q?VoIYtKlvmwuLUcj9lpLyDPRM5HPyDfN7J5IjpQDv/SpFgzeBIFvaI6WpsuZZiJ?= =?us-ascii?q?JkMLKkCAyTn9zQHay037a8Ss1LqVICYR6nhHwKjK3iNWpwm4p/mZhtbuUK7dbJ?= =?us-ascii?q?7sR/7SMTclWiucRTssDUaj4U2ktOYcvPqEPWcfpUgZYiCXCA4UvKBvt9nQDnTI?= =?us-ascii?q?lO1lZpIKge6VWyHqRC1/jqoyCT5BtVqQTPobCQnWc3jhjXJHuAysI/9D4XPoYr?= =?us-ascii?q?6Dy6pLReMWGIpMc/yeQ9veY/xeISknlilKcNq7KsbRq7c/z0LgUXoSE66O8kaX?= =?us-ascii?q?CkGRXK+y3TXuCKccuoUv8gEh4M7dhGcjEbvDNqyD/Ray44W4i2CeouSYWW4zNR?= =?us-ascii?q?9myNkeCXWMlUETYFoPDMsY7QS3GqM=3D?= X-IPAS-Result: =?us-ascii?q?A2HgAQAXBy9Z/wHyM5BdGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBgwEpgV0Sjn6oeyqIa1cBAQEBAQEBAQIBAmgogjMkgkIGAQIkV?= =?us-ascii?q?QMJAQEXMQgDAVMZBYgFToFFDa4qOiYCi1qIQYhUhSYFgSwBnHQCkxsNiyKGVUi?= =?us-ascii?q?UBliBCicJAh8pVXGEEhyBf1qJUwEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea10.nsa.gov with ESMTP; 31 May 2017 18:14:16 +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 v4VIDepu020291; Wed, 31 May 2017 14:13:49 -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 v4VI5dZs069953 for ; Wed, 31 May 2017 14:05:39 -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 v4VI5da5017529 for ; Wed, 31 May 2017 14:05:39 -0400 From: James Carter To: selinux@tycho.nsa.gov Subject: [PATCH 2/2 v2] libsepol: Fix module_to_cil's handling of type aliases Date: Wed, 31 May 2017 14:06:33 -0400 Message-Id: <20170531180633.19008-2-jwcart2@tycho.nsa.gov> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170531180633.19008-1-jwcart2@tycho.nsa.gov> References: <20170531180633.19008-1-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: Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP Type aliases present a problem for module_to_cil because they are not in the sym_val_to_name table that it uses to write declarations. Type aliases are gathered by going through the decl_ids list and then the alias declaration is written out when the block with that scope id is handled. This doesn't work if a type alias appears in a require block, since the require cannot be distinguished from the declaration. The result is two declarations of the alias and an error when secilc compiles the policy. Because of the work cleaning up scope handling, the alias declaration will always be at the end of the decl_ids list, so now only gather the last scope id. Also, when an alias is used in a module it is required as a type and it will appear in the sym_val_to_name table. When that occurs, just skip the alias when writing out types. Signed-off-by: James Carter --- libsepol/src/module_to_cil.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/libsepol/src/module_to_cil.c b/libsepol/src/module_to_cil.c index 77e1219..51e7853 100644 --- a/libsepol/src/module_to_cil.c +++ b/libsepol/src/module_to_cil.c @@ -323,7 +323,7 @@ static int typealiases_gather_map(char *key, void *data, void *arg) struct type_datum *type = data; struct policydb *pdb = arg; struct scope_datum *scope; - uint32_t i; + uint32_t len; uint32_t scope_id; if (type->primary != 1) { @@ -332,8 +332,9 @@ static int typealiases_gather_map(char *key, void *data, void *arg) return -1; } - for (i = 0; i < scope->decl_ids_len; i++) { - scope_id = scope->decl_ids[i]; + len = scope->decl_ids_len; + if (len > 0) { + scope_id = scope->decl_ids[len-1]; if (typealias_lists[scope_id] == NULL) { rc = list_init(&typealias_lists[scope_id]); if (rc != 0) { @@ -2274,6 +2275,8 @@ static int type_to_cil(int indent, struct policydb *pdb, struct avrule_block *UN cil_printf("))\n"); } break; + case TYPE_ALIAS: + break; default: log_err("Unknown flavor (%i) of type %s", type->flavor, key); rc = -1; @@ -3387,6 +3390,7 @@ static int typealiases_to_cil(int indent, struct policydb *pdb, struct avrule_bl { struct type_datum *alias_datum; char *alias_name; + char *type_name; struct list_node *curr; struct avrule_decl *decl = stack_peek(decl_stack); struct list *alias_list = typealias_lists[decl->decl_id]; @@ -3403,9 +3407,13 @@ static int typealiases_to_cil(int indent, struct policydb *pdb, struct avrule_bl rc = -1; goto exit; } - + if (alias_datum->flavor == TYPE_ALIAS) { + type_name = pdb->p_type_val_to_name[alias_datum->primary - 1]; + } else { + type_name = pdb->p_type_val_to_name[alias_datum->s.value - 1]; + } cil_println(indent, "(typealias %s)", alias_name); - cil_println(indent, "(typealiasactual %s %s)", alias_name, pdb->p_type_val_to_name[alias_datum->s.value - 1]); + cil_println(indent, "(typealiasactual %s %s)", alias_name, type_name); } return 0;