From patchwork Wed Feb 8 16:17:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Carter X-Patchwork-Id: 9562747 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 5FA1B601E5 for ; Wed, 8 Feb 2017 16:18:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3668D284C2 for ; Wed, 8 Feb 2017 16:18:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2B103284FE; Wed, 8 Feb 2017 16:18:01 +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 50AF8284C2 for ; Wed, 8 Feb 2017 16:17:59 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.33,348,1477958400"; d="scan'208";a="2997546" IronPort-PHdr: =?us-ascii?q?9a23=3A1xqLmBxaQMJDJTvXCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?1egVI/ad9pjvdHbS+e9qxAeQG96Kt7QU0aGG6OjJYi8p2d65qncMcZhBBVcuqP?= =?us-ascii?q?49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6?= =?us-ascii?q?JvjvGo7Vks+7y/2+94fdbghMizexe7B/IAu5oQjSuMQdnJdvJLs2xhbVuHVDZv?= =?us-ascii?q?5YxXlvJVKdnhb84tm/8Zt++ClOuPwv6tBNX7zic6s3UbJXAjImM3so5MLwrhnM?= =?us-ascii?q?URGP5noHXWoIlBdDHhXI4wv7Xpf1tSv6q/Z91SyHNsD4Ubw4RTKv5LplRx/yjC?= =?us-ascii?q?cMKiA3/mfZhMdtiK5XuQytqwB6z4PSfYqbNudxfrnFcN0aW2RPQ8hfWS9GDIOk?= =?us-ascii?q?bYYDEuQMMulEoIfyuVQOtgCzBRWuCe711jNFnGP60bM83u88EQ/GxgsgH9cWvX?= =?us-ascii?q?rQttr1MbkdUfuox6TW1zrDde9W1inn6IPVdR0ho/+NUq5qfsrL1UkjCRjIjkmQ?= =?us-ascii?q?qIP5PzOV0f4Bs26A7+V6T+6vhGknqx9orzWp28wiiZHJi5oIxl3L+ih12oY4Kc?= =?us-ascii?q?CiREJlbtOoDoFcuzycOoBrWM0tWXtotzw/yrAevJ67ezUFx4o/yh7EbvyHb5CI?= =?us-ascii?q?4hX+VOaNOTt4hGxqeLa4hxuq7Uiv0Pf8Vsip0FZRtCZFjtnNuWwN1xzU8MSHTO?= =?us-ascii?q?dy/ly91jqV0gDT6+VELVg1lardNZEh3qY9moccvEnMBCP7mFj6gLWIekgr5OSk?= =?us-ascii?q?8fnrbq3jppCGNo90jg/+Mr4pmsy6Gek4KRYBX2ya+eS6yb3i8lT1T65Njv0rlK?= =?us-ascii?q?nWrI7VJd8Aq66lAw5azoYj6xGlAzegy9QXh2MLLF1CeBKZl4TpIU3BIOjkDfej?= =?us-ascii?q?hFShiDVrx/fAPrL7HpXNLmLMkLH6cLZ/7E5czg8zwspE55JIFL4BOunzVlX2tN?= =?us-ascii?q?zCAR8zKxa0zPr/CNVhyoMeXnqCAq2bMKzIrVCI5fkvI+6KZI8UpjbwMPYl5/rz?= =?us-ascii?q?jX42glAdYK+p3YcKaHyiGfRmOUqZa2L2gtgdCWcKohY+TOvyhVyMUD5TY3OyUL?= =?us-ascii?q?wm5jwgBoKpE5rMRoe3gLObxCe7BJpWZmJYBV+QDXfkbYKEW+0DaCiKOM9ujiQE?= =?us-ascii?q?VaS9S48mzRyhqRP1y79gLurS5i0UqInu1MZr6O3JlBEz9Dt0D8KH32GLUW50gn?= =?us-ascii?q?sCRyUq06BnvUx91lCD3LBljPxED9NT/ehEXRs9NZ7Z0+N1EcvyWh7bctePVlmm?= =?us-ascii?q?Xs2sASstQdIp398Of0F9Fs2ijxHC2CqqBaQYl7mPBJAt86Lc2WL9J8BnxHbc16?= =?us-ascii?q?khjkcmTdVVOW2gmKF/6xDZB5TVnEWBi6aqaaMc0TbT+2eb12WOpkBYUBVrXKXd?= =?us-ascii?q?R38ffErWrc/h5kPGVbChFaooPhFGyc6YJatAcsfpgkleRPf/JNTeZHq8m2mqBR?= =?us-ascii?q?mSwLODcIvqe34G0SXYEEgEkhkf/W2INAglHCuhpHjeDDN2H1L1f0zs6fV+qG+8?= =?us-ascii?q?TkIszAGFdU5h172o+hMOhvyTUfAT3rUZuCs7rDV0Blm91crMC9WcvwphYLlcYd?= =?us-ascii?q?Ql7VhdyG3ZrQ19MYK6L615nFERbwF3s1np1xVtBYVKidIqo28yzApuNaKY10tM?= =?us-ascii?q?dzOG0pD0Pr3XLXL//BSya67K3VHe1cyZ9r0I6PQipFXppBupGVY683V7z9lV1G?= =?us-ascii?q?OR5o7EDAoIVpLxSVo3+gNhp7HcZSk86YbU2mdqMaWutD/Nxc4pDvM/yhm8Z9df?= =?us-ascii?q?LL+EFAjqHswUHceuLPAqlEazbhIfJ+1S6rA7P9m9ePub3a6nJuFgnCipjW5f+o?= =?us-ascii?q?ByzlqM9zZgSu7Px5sF3+yX0RaGVzjmiFesqdz4mYdBZT4OBGW/0jTkCJRXZqJs?= =?us-ascii?q?YYYBEX2uLNGvxtVim57tXGZV9FiiB1MC3M+mZwGSYkfn0gJOz0QXpmarmSyizz?= =?us-ascii?q?x7izsptLaQ3DTSw+T+cxoKInBLRGh+glfwJoi0lcoWU1Sobwgukhul6l33x6xa?= =?us-ascii?q?pKR5NWbTW0BIczLxL2F4Xau6rqCCbNJX6JM0rSVXV/yxYVSbSr7mvxsWyjjjEH?= =?us-ascii?q?VaxDA6cTGqp5r4kgdhiGKFLXZzqnvZdt1rxRvF4tzTW+JR1CIcRCZkkTnXGkS8?= =?us-ascii?q?P96x8NWOkJfDtuS+WHy7VpJPdinqw5iNtDCm5WJ2Gh2zhfezmsfoEQIiyy/0y8?= =?us-ascii?q?FqVTnUrBb7eoTrz761Mf9jfkVyHlDw8dF1GoZ6kossg5EQ32MXhpCJ8XoBlmf8?= =?us-ascii?q?Lc9X2aTgY3oRXTQL2cLa4BD52E1/KXKE34H5WWubwst6fNS6YX0Z2iQm78BMFq?= =?us-ascii?q?iU8KZInSxvolq3tQjRe+Ryni8Byfsy734Xm/8JuAwwwSiGHLASG1RXPSz2mxSO?= =?us-ascii?q?8d++sL1dZHyzfrioyEp+gdehAamaog5GRXb5fowvEjNx7sVjMFPAyXPz5ZvieN?= =?us-ascii?q?XKatITrBKUmQ/aj+dJMJIxiuYKhS1/NGLlp3Il1uo7ggJ23Z6guoiHN3ti/Lii?= =?us-ascii?q?Dx5FLT36edkT+ir3gaZFmcaWwpqvEYl/FTUFW5voV/2oHywIufThKQmODCU2qm?= =?us-ascii?q?2HFrrHAQ+f9EBmomrBE5+xMXGXOH4ZzdB5SRmTOkNQnQcUXC8gkZ4hDACqw87h?= =?us-ascii?q?f1ll6TAN/FL4rQFMyu1wPRnlTmjfvBuoaiszSJWHKRpZ9AVC50PLPsyC8uJ8BT?= =?us-ascii?q?tX84anrAOTNmybfBhHAnsRWkOaHVzjOKeh5cXY+eiCGuW+N+fOYamJqeFGTfeE?= =?us-ascii?q?35yu3pFj/zmWMsWPOXljAuYh1UVfWHB1AcPZmy8ASyYPjSLCc9abpAug+i1wts?= =?us-ascii?q?2//u7rVxzy6ouUEbRSN8lv+xetgaqYLeGfmCN5JSxf1pMWyn/C0KIf00IKiyFy?= =?us-ascii?q?azmtFqwNtSjXTK3Kgq9XFwUWay1yNMtS9KI8wgdNOc/ditzv0L53kv81BE1BVV?= =?us-ascii?q?D7ncGpf8MKKXmnNFzbHEaLKKiGJTrTzsHvf6yzUqNfjONVtx2svjaWCE7jMSqd?= =?us-ascii?q?mDb3TRyvNvtMjC6DNhxEpI69agptCXTkTN/+cRK0K9h7jTk3wb0vmnPKLnQQMS?= =?us-ascii?q?NifExRtLGQ9j1XgvF+G2xH83pkIvKJlDqZ7unCN5YWquFnAypumOJG+3Q6zL1V?= =?us-ascii?q?4DtDRPxvlyvYtsRurE2+kumT1jpnVwJDqi1Ri4KVp0piNrvW9oJbVHbf5h0N83?= =?us-ascii?q?+fCxsUqNt+ENHvvb5fysTXnqLpNDhC687U/dcbB8XMM82HMXUhMR3vGDPPEQQK?= =?us-ascii?q?UyWkNWDFiExbiv2S8WeVrpcioJj2hJUOUqNbVEAyFv4CEEtlE8YNIIlpUT4/lr?= =?us-ascii?q?6blNAH5Xy7rBbLRcVauovIVvWdAPn1LzaZl7ZEbQMSwbzkNYQTKpH720t6Z1lm?= =?us-ascii?q?m4TKHlDcXcpKoixgcAA0pl5C8GJ5TmIt2ELocR+i4HgWFfGohBE2kRd+bf4r9D?= =?us-ascii?q?jy/1c9PkDKqzcokEkthdXlhiiccD3xLae0Q45bEC/0t08/MpP1XQl1cRGynUxj?= =?us-ascii?q?NDfBWb1dlb1gen53iAXEo5tABeZcTbFYYB8X3fyXYesn3k5Yqii8xk9H4vDFCY?= =?us-ascii?q?d4mwssap6srHNA1xhlbNErOazaPLBJwURIhqKSoi+o0fg8wBUAKEYW7mydYjQI?= =?us-ascii?q?t1AINrQ9PCWo//Zs5hGFmztNYGgMTeQlo/Jw+kM7JeuA0zrq06RfJUCpK+yfM6?= =?us-ascii?q?SZtnDdms6PRFMw0F4HmFdB/bh3ysosaVSbV1oozLeLEBQJL8XCIxlPb8VO7HjT?= =?us-ascii?q?YTqOseLVzJ1oJYq9COHoQvKVtKsPmE2kBhwpH4MC78QaAJajzFzYLd3mLL4ZyR?= =?us-ascii?q?Qh/gLrK0uZDP5RYhKEjC8Ho92jzJ9wxYRSOyodDntnPiW4/LbYvBEqjeGYXNgs?= =?us-ascii?q?YXcaQ5EEOWgsVM2+hi5ZuW5PDCOu3uIFzwiC7D/9piPKADn6cdVjeO+eZQlwB9?= =?us-ascii?q?Gu5TU/76+2hEbT8pXZPWH1K9Jiu97I6e4BqJaHDe5UQaN6s0fGlIlSX2aqXHLX?= =?us-ascii?q?Ed6pO5jwbJEhbcfqBXa+U1y/jS81TsjqMdmxKaiIhB3nSpxPsImHxjwjM9GyFi?= =?us-ascii?q?0GERdqu+4D/L58ZREEY5cjYh7orQQ/OLa5IAeE0tWjWGmtKTxOT/ZD1+m6YaJY?= =?us-ascii?q?zzY0ZO+g1HQgVo06z/Ww8UMVWJEKjxTexfG/Z4leUSn+AWFSewTPpCUjjGdtLO?= =?us-ascii?q?AyzfkjwBnQq1kTLyiLdPB1aGxDp9wzH1eSIXRqBWUmX1CciIrC4gir37AU5SRQ?= =?us-ascii?q?hM1b0exfv3j4p5Pfbi+sVLatqZrLryoqdcImrLFpMYz/PsuGs4vTkSfBQ5nWqQ?= =?us-ascii?q?CKSjO1F+REldhKOyJXWuNImGE/NcwBo4pB5lI7Vt0iKLxXFKksureqZCJrDS4P?= =?us-ascii?q?zC8ZU4eA0yIHguqnxrTViAyfcJU4PxwCqplChcEdUyFuaCMEuKCjT5nWl3ODSm?= =?us-ascii?q?UTOgcT6wVM6x4Alo93euDl+5LGQoZRxTBMv/96VTDGGYVv91v+Vm6Zm0P4SOm7?= =?us-ascii?q?n+yvww1S0Orm0sMHVx5nFUhd2+FWm1MyKL5qNqYdpYHKsjqHdE/gumLi1vemLk?= =?us-ascii?q?FLycLIb134EJbFtW3kXy0G43IUX4hPx2rEGJQOiQp2crgrq0tIIICnfEb+6Dgk?= =?us-ascii?q?x4VmH7m4ScCryUwqrWwDRyuwFdpOFf1mukrNWDJ5e5CrtInlO5JKT25e4pGSt1?= =?us-ascii?q?dZkERoMy6405VcKNpA4j8SUzdRvzqRptyySNdM2cVuFZ8DPs9/u2vhGKNDIJWe?= =?us-ascii?q?uWc2uqHpynPD+DAxq1a6xDSyG6+kVO1V5WseFRs1J26GsEkgE/Ms8nvO8lDKql?= =?us-ascii?q?10/uFbBqSRgkV1vjl9G45BBipT1XGlNFlzS2FGvPtcKKTQacNcQv0yagSoOx0x?= =?us-ascii?q?D/Im2FaJ/U5sl3fjfyNyrhda+zzaXwQsWikVmK3imTsCqsy8OD8aTJxJbTM9by?= =?us-ascii?q?fFNQ2bmCZXvApBZEFwQZwZBMhK+60D14tO4sXCUVqsKT0CXBF6KgI41v9fmFVf?= =?us-ascii?q?sEmEfCDSFhCkdfDRvR1rZc2RttKmLOzl/AdbjYPqqOA4+L8ZR3K8nQ2iXMvToJ?= =?us-ascii?q?Liud2SrkuBaqP4PPOmYXPbSzjMlx+wj68+D5bW5yjTLBZbK55ixHomZpjuF3XG?= =?us-ascii?q?MglYKKIAOUVbT7x6ZstbrexAYc9rZroJ87d3Bh2bXhPvBJCvrP5eI1nISzTRMz?= =?us-ascii?q?mN/+6irY/d9rHSVe/gZsmQyHndWKJ3Io126T/lFLf2yYVe4Fb52u9x9kNmTljL?= =?us-ascii?q?KzqBo8r8KQML/saialDvvpkuHTPIHph8jmbixkZdeMUJWSGq9ooXyI9B4nbqVe?= =?us-ascii?q?14ylTzsPFV97R88Yk3+Kxpxt2pKqfOMvlaqkhnAgWOBgp26JotBnR/R3pLbe8V?= =?us-ascii?q?MvvRer4Zjc/2oeDtC6MX8AGV+/BeadbfO0HBgNewBS+BRhFfgQcBrSIaLhGG2P?= =?us-ascii?q?6bmq90TsKlqvbl2k435Fi+NBEGxqh35YiY4qqIuPPXbxzJwLcZXKjlXNj+oakq?= =?us-ascii?q?u0yI//Ekk6QOemNtaQ29DOcdTtIdxnvnza0yzyIjCdnDH7X7+P5HTX05gCntm5?= =?us-ascii?q?VgH1USBvMUHKaE/YVEkWc+gOzVLNoWcrpNmmyXDx6rDqcCyWK36yuQOGRlgAvB?= =?us-ascii?q?0xf+QWOp61/5sDF3TDDQz9j5lEpVTb63CV1UXyW3JU9yqCmPMxbwtNrrpaQ161?= =?us-ascii?q?k7MmrgtN+WlWuhPrZXE9f+JNyaLyk0vkgYjIYtRty1xIAUBca9IMoL8H5gdPfe?= =?us-ascii?q?7HmrkyBZqaddm4Xe+t2V+unQHXS4ia2aqqmCxDdcynciplEz8NGgNvbJ592RWP?= =?us-ascii?q?SlzGMRQihwugfbWB61sLPbpUgOOUOXyEfLhJAKPtZB0HYkzE7m4PYsQMkv9ARe?= =?us-ascii?q?EYbNfOgCqizyODTqx1aff9M3WTOE3ztRAF31DUFyGLIg12LooMLJiXDQ9kUsRo?= =?us-ascii?q?lrckzqhQd6D4smJk0w71gX2DAMERAXaRCcDrGnG1jqLZceWUgEcxSH06Cwer0r?= =?us-ascii?q?0k1r3rOv+OjTYPR+B6oMM/ZQlQuOk0ZbG50Iq60eQbR8e1BH+K7RuAfiF5DtX+?= =?us-ascii?q?L6mnooKf21Xsda/NgYt3oj+AmwXQav5IxY77kFlJCHaLJLbYLLvMBm4Edt/SQP?= =?us-ascii?q?eTBVgBhjkxO5VvgRq/vi4tjAvpun8OSuVKcxR+UP7Rc0GmB+goDsj1AkvN7Yyf?= =?us-ascii?q?1TSpDPiYT46gBCOWSGuIHA0xlzMeAOMZ6kfK5893UbICgTP2oOMsCKa/Yg4y9s?= =?us-ascii?q?PjLT50ZBAs8VftMXIs7NmQFSik30V7Be7dLbFUWEC4hvd8Ap4W33yCo28ZcmUe?= =?us-ascii?q?bv9iW2JZbB4FFJJf9Diz9slN3arugP3fXSEDQX4WWeaxVt3iOC0YeCC/Lq8uWK?= =?us-ascii?q?1t7ZTE4JHi85U4dcODqN4xenSfCvlJX0SA+U7NH8gI4mfkKKWnOxhLgFsrpLEe?= =?us-ascii?q?NYhSX0xCJeGZ7ph/KVqNes7GpXtkFZH4Zz9xLFBb5fMo99ORvmismhXlJ8CTfn?= =?us-ascii?q?eMHIahouv/KbxugS7OV4K0v+YogbLhUfy73k7XpVTw1uSKP5v1uCWeIeesFmSf?= =?us-ascii?q?PeoXxP74JvNbMPNkCHpJP2tjdItEw2AAgxZbAsrDxVbFXBkRZJVKbzvL4Ajgoc?= =?us-ascii?q?XsBjuU9QB22/JGI+6yDAVaRPg6mbEOYV/SmLTqwST0VoNTtzQxay2JVoZ7upku?= =?us-ascii?q?5Iv3hDniN8uvcq1SJpRAeyuC3rvaIN2ikg9Ku+tDofpXxPVv+enDvQCVVf0PQK?= =?us-ascii?q?ir8RC3n+5lyne3kPdZb87rZhK8Th84kh/ns+bA4sfy0DR+ugDT//g7mPAoyVv9?= =?us-ascii?q?JWnASNt9nWbb+vMSgSMawwyRDkR3h91AjShgpn8GsPQjW98dAlJYS9OcA+xiqr?= =?us-ascii?q?GGjWb0gM4qJXsMTrsV4EUeo2ZUlnwGp9zsiNXjcNS9DXG2Ypkggkbn1JcJNd6R?= =?us-ascii?q?AAEaklmTKIvrRb8QEVZzfUCZ6p+o7KncfHwXM9V8tlxnrKpq2ZgZMnyH9llM16?= =?us-ascii?q?7i6AvHQfbOLZXNVqAnftyodT0+r+aOuxsuofUotp1KyhUOMeMsmk4Wa215FqWk?= =?us-ascii?q?irx7sAG1q5NPQOxqzcUyejSG2XRf6Hc26SkDYlKkTy/wWnLkUraMdWqE8wKunC?= =?us-ascii?q?hp5clg35VrN0QiSQpUPFw2E4NOMadh42uJ25dAAQS+4RfeecL/A0wPIiEFsMc2?= =?us-ascii?q?PJHSxuBu+qsF6tmZN2O2lh4UrmYuTi7ATmPMGUGhYaDY7QtoRx9uCiRmKdJX9g?= =?us-ascii?q?ywV/PEx19+fcFFQxsfRRc5SLktjTgNR71/AKd/F3PS07pNEThppp6ZOI38eSbR?= =?us-ascii?q?HR0pHyKMnOrfeGBf3f018nenpeUroefQP1+5s6McAkVLHJGrtZpxscD7AgQJM9?= =?us-ascii?q?L2fx6L10LARrfw7JY7S0htPlpviFZ5tTo3/W4Ek9LCLbux0E0fy7UxB0b4qth3?= =?us-ascii?q?XpO5AwRzRBr9J3BhthBotPFNsKrxC7DJ6MhKG7l9ix9lt0u+AUtarwC+jK28qi?= =?us-ascii?q?0oRwXpha4EmLMyjLBKlvnEtplOOygu3P0pPpE8PtZcsEVPRnQm7CcrLHEJ2/Ki?= =?us-ascii?q?iPOs3gZUFL6Luc0LNlUhWLei/1Ra2GtDerNP98+0U01pR4fPbPzDwq97zb39/y?= =?us-ascii?q?aH9Aqye7qX6GLoBf7EDLBePCQxJUU+SK/3h/Ea0Rc4T06P8EMcY+z9iE/wlz8D?= =?us-ascii?q?NC3dOBI6igqE/Mx016eYvfLEvowCY5RZIKLQ++MUQ2h2/ZrW7RAXNGLsirMcNt?= =?us-ascii?q?msqaDgTx50ltnmEgfnVBFXTsRdeQP2gbxs2/aAqF+gJXD9YMgfS3dlAgtqKoUu?= =?us-ascii?q?RoOYtKmf+stLoZldZmMDzPRMdAMyHXNr92MSJbDv/Tq1gwfh4Er781V58wZZeU?= =?us-ascii?q?PEwHMEaAySX1zQbZz030dtqs27iNICYX9HVH0r3E3SJLpwmjtvaTmtfjX6zBbJ?= =?us-ascii?q?HqQP7SNzIoVjOASjQxFkam4kypu+cCvPqEIWcfpU0UYi2SCA4PvKxvq8bfDnPL?= =?us-ascii?q?k+15YJIKnOyaWzz3SCBgm6o9HD1EtVqNQ/UdEQnbdGHhgG5Gtwy5J/9M4Gjpb7?= =?us-ascii?q?uGyapJQ+YWGJdDcuWFQ9vEfvBTPzUoljAeOOamZd3crq0530nOTWQDFqnH6lye?= =?us-ascii?q?QFSRQvyGyDLhRZ8VsJQsuio05tLQmTd6E7/GP7aauzGj8421gT2GueLATGktYk?= =?us-ascii?q?00gOUEAGWbxhlPNn0EAckPuE7xWq6Ae1pM1HUxhOJs3B8MfgBzX2Zr0nJIgfm9?= =?us-ascii?q?FMpZSUQIg2ywWvEGak54DC9jtXONtxb/Zd0GpND7W35V9rxKT5EUavYv9tr5Iq?= =?us-ascii?q?wVldQg2T996AczqTmQFRsJjB2O+rDMRopg17ZC4i8+5PgwUUaRFWCMOlPbw5ar?= =?us-ascii?q?XpocjRxlpmrpgo+O5u0=3D?= X-IPAS-Result: =?us-ascii?q?A2HVBABlQ5tY/wHyM5BdHAEBBAEBCgEBFwEBBAEBCgEBgya?= =?us-ascii?q?BWRGOU6hQKIhvVwEBAQEBAQEBAgECXyiCMxuCIwIkExQgDgMJAhcpCAgDAS0VH?= =?us-ascii?q?wsFGASJRg2xfTomAotgj2ERAWiFGQWBKwGPFYstApISAopUhi0CSJJLWHYIGAc?= =?us-ascii?q?CESNLYYMfRB2Bf1eGUYItAQEB?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 08 Feb 2017 16:17:56 +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 v18GHPTs028989; Wed, 8 Feb 2017 11:17:33 -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 v18GHNgL195348 for ; Wed, 8 Feb 2017 11:17:23 -0500 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 v18GHNQN028985 for ; Wed, 8 Feb 2017 11:17:23 -0500 From: James Carter To: selinux@tycho.nsa.gov Subject: [PATCH] libsepol/cil: Destroy cil_tree_node stacks when finished resolving AST Date: Wed, 8 Feb 2017 11:17:42 -0500 Message-Id: <1486570662-26345-1-git-send-email-jwcart2@tycho.nsa.gov> X-Mailer: git-send-email 2.7.4 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 CIL uses separate cil_tree_node stacks for optionals and blocks to check for statements not allowed in optionals or blocks and to know which optional to disable when necessary. But these stacks were not being destroyed when exiting cil_resolve_ast(). This is not a problem normally because the stacks will be empty, but this is not the case when exiting with an error. Destroy both tree node stacks when exiting to ensure that they are empty. Signed-off-by: James Carter --- libsepol/cil/src/cil_resolve_ast.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/libsepol/cil/src/cil_resolve_ast.c b/libsepol/cil/src/cil_resolve_ast.c index 7fe4a74..6628dc4 100644 --- a/libsepol/cil/src/cil_resolve_ast.c +++ b/libsepol/cil/src/cil_resolve_ast.c @@ -3778,6 +3778,16 @@ exit: return rc; } +static void cil_destroy_tree_node_stack(struct cil_tree_node *curr) +{ + struct cil_tree_node *next; + while (curr != NULL) { + next = curr->cl_head; + free(curr); + curr = next; + } +} + int cil_resolve_ast(struct cil_db *db, struct cil_tree_node *current) { int rc = SEPOL_ERR; @@ -3904,16 +3914,12 @@ int cil_resolve_ast(struct cil_db *db, struct cil_tree_node *current) /* reset the arguments */ changed = 0; while (extra_args.optstack != NULL) { - struct cil_tree_node *curr = extra_args.optstack; - struct cil_tree_node *next = curr->cl_head; - free(curr); - extra_args.optstack = next; + cil_destroy_tree_node_stack(extra_args.optstack); + extra_args.optstack = NULL; } while (extra_args.blockstack!= NULL) { - struct cil_tree_node *curr = extra_args.blockstack; - struct cil_tree_node *next = curr->cl_head; - free(curr); - extra_args.blockstack= next; + cil_destroy_tree_node_stack(extra_args.blockstack); + extra_args.blockstack = NULL; } } @@ -3924,6 +3930,8 @@ int cil_resolve_ast(struct cil_db *db, struct cil_tree_node *current) rc = SEPOL_OK; exit: + cil_destroy_tree_node_stack(extra_args.optstack); + cil_destroy_tree_node_stack(extra_args.blockstack); __cil_ordered_lists_destroy(&extra_args.sidorder_lists); __cil_ordered_lists_destroy(&extra_args.classorder_lists); __cil_ordered_lists_destroy(&extra_args.catorder_lists);