From patchwork Tue Nov 15 21:06:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Roberts, William C" X-Patchwork-Id: 9430499 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 5F5A260471 for ; Tue, 15 Nov 2016 21:10:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4B31228C9A for ; Tue, 15 Nov 2016 21:10:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3FA9228C9D; Tue, 15 Nov 2016 21:10:21 +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 6694828C9A for ; Tue, 15 Nov 2016 21:10:20 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.31,496,1473120000"; d="scan'208";a="792536" IronPort-PHdr: =?us-ascii?q?9a23=3A96IK2B0bC2S2aIyRsmDT+DRfVm0co7zxezQtwd8Z?= =?us-ascii?q?sewVKPjxwZ3uMQTl6Ol3ixeRBMOAuqkC0rCd6vy7EUU7or+5+EgYd5JNUxJXwe?= =?us-ascii?q?43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRp?= =?us-ascii?q?OOv1BpTSj8Oq3Oyu5pHfeQtFiT6zbL9oMRm6swrdutQZjIZsN6081gbHrnxUdu?= =?us-ascii?q?pM2GhmP0iTnxHy5sex+J5s7SFdsO8/+sBDTKv3Yb02QaRXAzo6PW814tbrtQTY?= =?us-ascii?q?QguU+nQcSGQWnQFWDAXD8Rr3Q43+sir+tup6xSmaIcj7Rq06VDi+86tmTgLjhy?= =?us-ascii?q?kdNz497WrZlMp+gqxGqx6lvhBz3pLYbISTOfFjfK3SYMkaSHJBUMhPSiJPDICy?= =?us-ascii?q?YYwXD+cDIOpVoYbyqEcBoxSgHgmhH//vxz1Si3Pqx6A2z/otHAfb1wIgBdIOt3?= =?us-ascii?q?HUoc37NacTVeC1yKjIwi/Gb/9MxTjx8pLIchc6rv6SR7JwbdHRxFIuFwPDklWf?= =?us-ascii?q?t4jlMymJ2eQKtmiW6fdrW+G3i2M/tg18rTeiyt0sh4XUnI4Z1F/J+TtjzIooPd?= =?us-ascii?q?G0VUp2bN2+HJdNtSyXN5F6T8cmTm1ytis3yrsLsoOhcicQ0pQo3RvfZuSCc4iP?= =?us-ascii?q?/x3sSv6cISx9hHJ5YLK/gAuy8VS4xu38SMa01FFKozJZktbWrHAN1gHT6tOdRv?= =?us-ascii?q?th/kauxTaP1wfJ5uFCPU80jrbUJ4Qkwr4xkpofqUXDHinol0XqlKKaa0op9+ey?= =?us-ascii?q?5+nnf7nqvIGQOoBqhg3kL6gigsm/Dv45MggKUWib4+O81Lj78E3iXrpKivw2kq?= =?us-ascii?q?/EsJHVPMgUvam5AxJT0ok/9Rm/FCyr0MgYnHYbLFJFfwiLj47yO17UOvz4AvC/?= =?us-ascii?q?g0q0nDdx2//GJqHhAonKLnXbjrjhZaxy61RdyAoo1t1f/4hbCqsAIPLoQk/xsM?= =?us-ascii?q?bXAQMnPACuxObnEtp93JsEWW2TGq+ZLL/SsViQ6+IhOemDfokVtyr8K/g+/PPu?= =?us-ascii?q?iGc5mV4Ecamy05oXc2q0HvN8I0WWeXDsmMsOEX8WvgoiS+znkF6CXiRQZ3a1Qq?= =?us-ascii?q?Ix/TI7B5ilDYfEW4ChmruB3D20HpdOfGBJFkiMEWv0d4WDQ/oDcj+dItVgkjMa?= =?us-ascii?q?T7isUJUu2g2rtAPgzLpnNOXU8DUCtZ3/zNh1+/HTlRYq+Dx0Ecud12WNT2Zvk2?= =?us-ascii?q?MMWj82wKd/oUlnxVuZ1qh4mfNYH8RJ5/xVSgc6KYLcz+tiBtDpVALBZNCJSE26?= =?us-ascii?q?Qti9GjExSNUxwtELY0lnHdWulBbD0DS2A7UNjbyEGIQ08r7A33j2P8t8xWzJ1K?= =?us-ascii?q?09j1Y4WMtPLnarhrBh+AjJHIHJjkCZm7ytdaQG0y7H7H2DwnaWvEFETA5wVr3I?= =?us-ascii?q?XWwCaUTLrNT2/EfCQqSyBrQgNwtO1dSNKrBWatHzi1VJWuvjMszEY22tg2ewGQ?= =?us-ascii?q?qIxrSUYYrsemUd2CHdB1Yfkw0I53mJKxI+BiC7r2LZFjxuGkrlY1nw/ulmtHO7?= =?us-ascii?q?Ukg0whmXYEJ7y7q64AAahfKTSv4Iwr0EuD0uqy9oHFmjxdLaEdyAqBR9fK9Ee9?= =?us-ascii?q?My/E9H1X7Ftwx6JpGgMaFiiUICcwRwpUPizQl4CoVHkcgso3Mn1w5yKaOe0Fxb?= =?us-ascii?q?bTOY2or8OrrNKmn95BqvcbLZ2knC0NaK/acC8PA4q1T4vAG1D0Yi6Gto091U03?= =?us-ascii?q?ua+5XLAxEfUYnpUkY28Rh6pq3VYjIn64PSy3JsLbG+siXe1NIxGOsl1hGgcs9F?= =?us-ascii?q?MKODEA/yF9MVB9KyJ+wtlVmkdQkEPP1O+64vJc+mcOGG2KGzNuZ6gD2mlXhH4J?= =?us-ascii?q?x60k+U7ypzUPPI35Ifz/6CxAeITDD8jFO9ssDwn4BJfjQSEna5ySjjGIFdfKty?= =?us-ascii?q?cpgXCW22Oc242s1+h4LxW35f7FOjAlcG1Na3dhqUdFH9wxNf1UAToXO5gyu01T?= =?us-ascii?q?p0nC81rqCHxizB3/zidAYbOm5MXGRijknjIY6vj90BX0incQ4plACj5Unk26hX?= =?us-ascii?q?vqN/L3PcQU1QZSj5M3liUrestrqFe8NP9pUovjhMXeSiZ1CVV779rwEc0yz9A2?= =?us-ascii?q?tU3Co7eC2yupXlgxx6j3qQLG5po3rEfcF93gvQ5N3ARf9RxzYGSjN3iT/NCli7?= =?us-ascii?q?Jdmp8s2el43fveCmS2KhSppTfDHzzYyaqSu74XNlAQWlkPC1ht3oDxI63DTm19?= =?us-ascii?q?lxSyrItg38bpPw16S9LOJnZFVnC0Hy68p9AIF+nZU/iIsW2XcEmpWf5WAHnnvr?= =?us-ascii?q?MdVHxaL+a2IARTARzN7T/Ajl30hjI2mHx43nS3qdxdFhaMOiYmMM3SI97d5FB7?= =?us-ascii?q?uI7LBemit1uFW4pxrLYfdhhjcd1ecu6HkCjuEGuAoi0j+dA7AKHUlEOizhjBKI?= =?us-ascii?q?4M6irKVMeGmga6Cw21RkkdCnEr6CvhlWWGzldZc6AS9w8sJ/PUrJ0HLp7oHkfM?= =?us-ascii?q?ffbc4PthKOiRjNlO5VJ4wtlvoRmSVoI3r9smM/x+49kxNuwYmwvJKbJGV14KK5?= =?us-ascii?q?HhlYOyXvZ88J9DDhl6NekdyS34CoHpRsAS8EU4ftTf6yFzISr/vnPR6UEDIgsn?= =?us-ascii?q?ebBabfHQiH5UdgtXLACYirN2mMKXkXzNViXgKdJFBRgAAVWjU1hJg5GRyrxMP7?= =?us-ascii?q?dEd1/DcR5kT3qhFU0OJnKwH/UnvDpAevcjo0UIaQIwFI4QFE5kfVLcue4/lyHy?= =?us-ascii?q?5G4JKushaBKmuBZwRHFWsJQFCLB0j/Prmy4tnN6/WXBvGgIPTUbrWOs/ZRV+mT?= =?us-ascii?q?yJK0yIRm/CuMNt+VMXV4C/07x0xDUmpjG8jAhzUPTC8XliLKb8KBohez5DF3pN?= =?us-ascii?q?il8Pv3QALv+ZePC7xKPNV04R+2n72MN+GOiyZiMjtYzYkDxWHSx7gQwlESkDti?= =?us-ascii?q?dz+zHrQcrSTNVr7fmrdLDx4HbCN+LNBH76Mz3glKP87Wkc762aBjgf40EVhFU0?= =?us-ascii?q?btmsazZcwFO2u9Lk/IBF6XNLSaIj3G29v4YaymRr1OkupZrBqwuS6FHE/lOzSM?= =?us-ascii?q?jTjpVxS0PuFLgyCXJhteuJuychx1E2jsUMrmagGnMN9wlTA23bo0hnbQOW4GNj?= =?us-ascii?q?h9cl1CrruL4iNChfVwBW9B42F5IumDniaW8/PXKo0KsfdxBCR7if5a6mwgy7RJ?= =?us-ascii?q?9CFEWOB1mCzKo95to1CmlveAxyFiUBpJpDZLipyEvVl+OaXZ8ZlAXGjL8AgL7W?= =?us-ascii?q?qOFxQAv8FlBcH3u6BM1tjPk7r+KDZE89LI48QcA9bbKMeZP3o9KxroGCXZDAwd?= =?us-ascii?q?TTG1M2HfglZSkPCW9nKOqZg7pYLgmJ0USr9UTFY1DO8VClx5HNweJ5d6RjUknq?= =?us-ascii?q?CBg84M/ne+rx7RRN5Gvp/dUPKSGvbvKDeDgblCeRQI3avyLZ4POY3jx0xidl56?= =?us-ascii?q?kZzQG0XORtBCvDdubhUor0VN63VxVWwz21j4ZQOq7n8TDeS0kQA2iwdkZ+Qi6i?= =?us-ascii?q?vs6U8tJlXWvCswjFUxmdL9jD+Mdz7xKqGwUpxIBCrwtkg8KYn0TBhvbQ21h0Bk?= =?us-ascii?q?My3ER71Jhbt6aW9rkBPcuYdIGfNEUKJLegEQxfCKaPUzyllTsD+nxVVA5erLEp?= =?us-ascii?q?ttihclcYO2r3JBxwJibMQ5JarOK6pV1lJQnL6Bvje01uAtxw8TP0gN8HmMdyEV?= =?us-ascii?q?o0wHLL8mJzav/ux38gGNgSdMeG0WW/otuPJq+Vs3O/6cwCL4z75DNkexOvSbL6?= =?us-ascii?q?OeoWjPi8iIQ1I31k4TmElF+6V23d0kc0qOWEAl1KGRGAgRNcreNQFVaNJf9GPN?= =?us-ascii?q?ciaKsOXNx491PoqmG+/0Su+OsbobjVi/HAY1BYgM6NoOHoW02kHCMcjnNKIFyQ?= =?us-ascii?q?kq5AnzJ1WFFvRIdwiNkDcbo8Gy15B33Y5FJj4BG2l9Nzu45qrPrA8wnPWDRMs2?= =?us-ascii?q?YmsdXoYcKnI2Wci6mylFv3RADDi6yf8WyAmC7jDmvSvcFj/8YMR/ZP2MfxNjFM?= =?us-ascii?q?m2+Skj86ixkVPX8pLeKH/0Ndt8oN/C8uIaqIiZBPxKV7V9tF3cm4ZATXywT2HP?= =?us-ascii?q?CcK1J4T3a4Q0d9P0Dne6XUChhD0tSsfwPNCtLq+OgQ7yXotbq4ib0yolNcOkGD?= =?us-ascii?q?EeBg18p+cd66JgfQcDeYY0YQb0twQiMKyyOByX3cuoQ2u2MzRZUudfwvugZ7xM?= =?us-ascii?q?1SUsdO+7xGEnTpEgwOm96VQNS40SjhHC2fajYJFTUSfuGnxcfwXPoTQ2l216O+?= =?us-ascii?q?kv3Ogw2xLIvkMaMzyRc+xpcmNEtckmBVyOOXV2FnY4R1iEgIrZ5A6s3qwd/yta?= =?us-ascii?q?n9ZQyu1LqGHwsILFbj+wX6Kmsonasy0lbdc6uaJxKpDjLtGAtJzAgjzVVIPQvR?= =?us-ascii?q?GdUC6mC/pancBdIDhFT/ZVgmwlNskGuIVb5Uo3SMg+O6RFCLMwqbCydTpkESkS?= =?us-ascii?q?wDcFWIOCxjMNnvyx1KfdlheUdJQiMQILsI9egtQDTyF2YjkSpKi5V4XZj2WEUH?= =?us-ascii?q?QEIB8P7QRQ4wINjpVwcfr/4IrPV5BB0CJWo+huXSvVCJZo81r7SmeZgVj8SfWh?= =?us-ascii?q?nOyp3R5czP32yNkbXQRzCU5DyOZKjkEoMq14K7EMvo7WtT+FbUP7s3j2yOS8IV?= =?us-ascii?q?lRyMvUekb5DIrZr2X8STET9mcOSY9J1n7fCYwYkxBlZ6YzuFVMPIemd17w5jA+?= =?us-ascii?q?24tpH7i4VcWqx1k/rnYLXCaqHMRfBO54ql7XXydlY5+zopX/J5pSWnNQ+IGaq1?= =?us-ascii?q?pBikptKTO5yZxGJ8FO+TMMXTlPoTSBvNSpUsFD39F5D4MUKNdlp3j9AL9EOISW?= =?us-ascii?q?o3Autbzv0GXW+zYgsFqhxTWzHKG5T+RF/20eBAopJmKeqlUxAOs26GvS9E7Csk?= =?us-ascii?q?xs9edBGrePlVlxoCp6Hp1WGjZJ0nWlIk9vTHVatuVVM77Zc8pCTPkufRWvIQAx?= =?us-ascii?q?FeY630yV+kF5hXf5bDZotgRA/yDSQhI5WjQLjbf1gT0RtMWnNiEAS55SajUhdS?= =?us-ascii?q?jFIRqBmS9LpBZfd11qW5cBD9ZH/LEUw5BZ8dfcRka3Ny4FRgBiORwl3vZFk05M?= =?us-ascii?q?rlmYczjHDQW0bfbPrgF3fcCJocGyIvT24BtLh4H6vO027KgMW3qmmQixTt/EtI?= =?us-ascii?q?/8qseGtk2Qe6fkK+e8e2POTCDQjRCsgrcpF4PK8DbOPwpbMZZ61WEpYZzmCW7V?= =?us-ascii?q?IxtKOb4UJ01GWq9kc9lGpP5VZ9N8cqYT5aBtHg6HRg/oGIG3tPlGNUrTSi7DIC?= =?us-ascii?q?Wd6eG/uoXT7aHHSef8eMOMwWrHQ7htMZd+8zX7HK3q0YBG8Ersxvht7l96SUTB?= =?us-ascii?q?My2ZsNThPB0E69e/eUb5o50pGS/WAI1qn3rzx0FAcM4XTDO28JgCz5NZ8nnwQ/?= =?us-ascii?q?pi0kfvqO1S66Vk6Y4v7r90z8e7P7zfJulcsUB9GBSUAR9q9po1CmhlW29RevMR?= =?us-ascii?q?KOvWfakBj8Dhsfr3F6sM6B2R4eNZd8DKJ0Tcmsm7FjGcSABLnAYbpj4cNQuQzf?= =?us-ascii?q?mFm7V7Scy9v+j2xlot40SiLh4B1L1t552L+qyGpO/NaBve0KYLV7P2RszpqLQs?= =?us-ascii?q?oESS6ecilLEQZmx/exenH/QFVs4B2mfgyrgnzSQoE87YHrLg/vtDW2g4njLmlZ?= =?us-ascii?q?B9BU8ZGugIHbqR4IRRgns4m/HDNtIIaKxCnXyPFRG8GL8Y1XGr8zeXIHVighzW?= =?us-ascii?q?1RHwQH+87FjyrSBiWivA1dbjkk1SVrmsHkdfRC+pNEB3sT+VOwrortX3s7wv7E?= =?us-ascii?q?4qKmzkqM6NlGy5NbxLBcL/IMKTITIopFMXi508Xcev1pwaGdWjJtcR7HB+YeHE?= =?us-ascii?q?52OtjSBBv79Nh5DC7cGN5vXXAX6ggrWeq7WWwTBVymM1vV8h5d+9MfHO/ceFQ+?= =?us-ascii?q?yy12YWTSdwpRfOXwKvprzctVAUNlSB0F3Xl4wSItFZwX4421nj5OgnXt0z8QJe?= =?us-ascii?q?GZjEZ/4ZqjD8Jjz0wU2HY90tSime0iFYHlb0EVl+BKgzxmbwvMbIlXff5VIoQJ?= =?us-ascii?q?V/eFL9iRxxEYo4NVon6EILzSobDQgNdRebAamqBUTkKIsJTk0DZgqH3bekYKc3?= =?us-ascii?q?3Etzwry16O/Vc+N8G7IHNuxBgQ6WgFhbBpUWvLUfQLN9YVBS7rLYqxP5C4f5Q/?= =?us-ascii?q?jpi2Y/OeeyQsBA/sATr2Ei7RqnRxq89ZdD6K4Wh4uJdq5fb5nDpsJ870Z75T4X?= =?us-ascii?q?bCNNnRx/ggilXuAbue/s/MLUsIey6uapTqYiXf8b9x8uB2Rxl5HwmkwsocnL1+?= =?us-ascii?q?dATY3YkZz//xpRI3GWuIbb3R58KfANK46yZ7Zv6XEHJykYJ3ITMtubcOE87DVx?= =?us-ascii?q?MDrP51xDDMQMZckbPMbXmgBblFfpWLdN+crfAFOYDJ1zd88w5Wrt1D816Yc8Uv?= =?us-ascii?q?rn6DKuOZDf9U9CP/dZgyVqit3Pv/UawfvdCCgW/XmWcQN1zTmYy5mQEfrw+/uD?= =?us-ascii?q?yM3MXVMcAiE2S5tdJCaF+QG/Seq6jo/pXR2I6s/zm58+cEOQRmCvk6QFqKlMDP?= =?us-ascii?q?VAhj/93jdACoD/n+iVvMa06GtLql1HF55+7RLbF6VZIpV7PhP4ms6wRkdiAiv/?= =?us-ascii?q?ecfUdgchueeNwucD/f9+NkvkaoMBJBIL1a7642JPTgRyUL72okqZXeUJadtjT/?= =?us-ascii?q?PEqGxV6Y1+JKIUOVidpYblrjFWp1AqDg4pb6Uwrj9BdkXUmg1aRbr0sqYaigQA?= =?us-ascii?q?Sd55pVNMGWWoNWIx+zXHTr9VgLCMBvIa9DuTT6oOU1hnMy5lTBO13Y9he723kv?= =?us-ascii?q?xdtWNGhCx9quAw0zN6XBu8pTHsp6UV1DIi/7G4tDMBtWZZQeWelyfIFEhMzfUL?= =?us-ascii?q?jacaEHbi6l28bWIdbIvz/rloP8Dg+pQg43glZxUsYTEGV/y6Cy7sl6OIHpCPsN?= =?us-ascii?q?VEiR6MpsXBd7mzIDMWNrQg1B3jRn990hPEkBZv6msLTS2q7MU4K4WlJcYl2i2o?= =?us-ascii?q?FHDZdFkS7KNJvs/xuEUFTeQsb1Nu3nlj3tKBRiITWMzFA3w1gRQ8aWVYbJJD7g?= =?us-ascii?q?cXF6YsgjaPsKhJ4AUUYDPPH4S+/YnQm8bI1mUnQdds2G3WurWPhok23319h9N0?= =?us-ascii?q?8imOtWwQd+zYU85sGn/z1oNeyeziefqgqeUHSIp6yLS7TvAOKM6j+XG52J9yQE?= =?us-ascii?q?+q2qweH0alMO8E3rrbTyalSWiDVOSXcmiDgzU5PVD25RWyKF04dttKpVcnMuTe?= =?us-ascii?q?np5cixHhUbRsSyWVpF/bz28jMeQBegI0ooineAsKTOgPaOiaP+QuxuMxCEcUZX?= =?us-ascii?q?/TASR2E/O2sUKqnIVjIHpv/0P6Yfj2/wD9NNuSHQUEEZLErpFv5PO2XGWBOWVv?= =?us-ascii?q?zBdqJkl76//fF0gttu9ba5uRhd/Qh9Bh3u4fefZtNik9utAIl4Jm7omU19yKfg?= =?us-ascii?q?/NwZboItHVueOYA/zZz0QlYG1aVaAZYQzt7YUgItE5Q6HTHadevRkEC6g1Xpgh?= =?us-ascii?q?N2bp9K5qNw5ycw/RZLGxgsb0vOKLYoVbq2XR7lIqIyfWowcDxeCsTQxnc5CqgG?= =?us-ascii?q?3/IJAsRjJBqN1tDwFpHJBUFsMFrgqnH4SUl7+hh9+24UN6tPcAsbDsBfDSyNS5?= =?us-ascii?q?w4JxUoBU5EyTJjbRBbVkjVp+g+S3g/fAzoPxBt34ddMDTuh7TXbPaqXaEYWnNj?= =?us-ascii?q?KOJsX8dlZB876Yzr10SQ2RZCTjUKqdqC2kNelr4VkhyoNmYuXf1jot4K/H2NHq?= =?us-ascii?q?fWFUuj+jrWKVNJtY9FHKAe3eXxRJSfuK6WplGawXbZDo9OcVKtEiwcKT4w907D?= =?us-ascii?q?hY18uFOaehpFfW2k1nbZLbMFfp2yEhVIkRPhu/NUosgWnEqnXSBnhSIdSkKclz?= =?us-ascii?q?j9aPEBPt/1N+lHouZmFfAGroQ8meOWwA1MKjaw2G7gVLD8wMn+SvY043qrWySf?= =?us-ascii?q?V0OpVCgeiqsLQHkc11KyzURclaJifQI6VsMjpXEOrPuEAiYgQYvLgtRoc1eZ+O?= =?us-ascii?q?LVsCMEia1SzyzQrC0Uvzd9G3yqaJISAW/WtDz7LE1zhMuga4teyegs35X7DTdI?= =?us-ascii?q?v2U+LKMCo5SjGaQiw/EUSz9lenvPoLp+GVIXoZolAIYiKSDxMTpq9vrdjMFGPT?= =?us-ascii?q?n/NsfIESjvCARy/wUDF4lLY1BitTukCDWeEMFRPXb3D/hGpRoxKiJvtW8nL+br?= =?us-ascii?q?2Y27BZW+oIDYtQaveZWcfXeehCJzc0kTUUIOS8f9jbr7YjyFLITHAZHrLO9FKE?= =?us-ascii?q?SU6ZXP2cyyjsXYUPsIg+ojAo9c7Ini9rD6TIOK6SqCCs8o6/jCaYv/beVm4rY0?= =?us-ascii?q?Euj+ICGnSBwAdeJ2EeEd0Vvl/iQrKYbUZWyH0pkf5u2wMLeAlrSX1u3HhWk+q8?= =?us-ascii?q?F8BaUlMUkn2hQOcHbFF2CzMw+1WG4gvsbtwcocrTXXNR9qMQSYoBK/kl8IvXOK?= =?us-ascii?q?wWwPYtxz9mpTI1vDiTD1NalAKK77TfELh6xrJc+Wlrt81xC1qDWBvDY2PHzcyg?= =?us-ascii?q?EMsJyiBw5Tji0cn8sedqO79X4Yp+BRNCGi9yJ9bA7RhdQGr03020pB/9EzOAcx?= =?us-ascii?q?wD5zNeOi0Bcud8yqlw9gzPfNvb9Vi4tqQ9pU/tAgGOWen844BCFsy8jVbwUiJM?= =?us-ascii?q?azj+Uskupw=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2FdAQDceCtY/wHyM5BdHAEBBAEBCgEBFwEBBAEBCgEBgww?= =?us-ascii?q?BAQEBAR+BWLpUBVMkiCxTAQEBAQEBAQECAQJfKEISAYFeGoIcAiQTFCAOAwkCF?= =?us-ascii?q?wghCAgDAS0VGAcLBRQEBIhLs1U9KgKLPgEkiEGGbxEBhX0Fj1yKZZBiAooWhgq?= =?us-ascii?q?RUVU3I0aFPVEBhUMpgi0BAQE?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 15 Nov 2016 21:10:18 +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 uAFL9Zdb003389; Tue, 15 Nov 2016 16:09: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 uAFL9XCl119729 for ; Tue, 15 Nov 2016 16:09:33 -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 uAFL9W2q003383; Tue, 15 Nov 2016 16:09:32 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1DlAABReCtY/yNjr8ZdGwEBAQMBAQEJAQEBgzcBAQEBAR+BWLcdgzcFWhiGC4ImUwECAQEBAQECYoU3UjCBDxIZiFOzUT2LXgEwiEGMfgWPXIplkGICkCCRUVU3hiYdNAGIGQEBAQ X-IPAS-Result: A1DlAABReCtY/yNjr8ZdGwEBAQMBAQEJAQEBgzcBAQEBAR+BWLcdgzcFWhiGC4ImUwECAQEBAQECYoU3UjCBDxIZiFOzUT2LXgEwiEGMfgWPXIplkGICkCCRUVU3hiYdNAGIGQEBAQ X-IronPort-AV: E=Sophos;i="5.31,496,1473134400"; d="scan'208";a="5825920" Received: from emsm-gh1-uea11.corp.nsa.gov (HELO emsm-gh1-uea11.nsa.gov) ([10.208.41.37]) by goalie.tycho.ncsc.mil with ESMTP; 15 Nov 2016 16:09:32 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3AeL61JB2k07yI8/jCsmDT+DRfVm0co7zxezQtwd8Z?= =?us-ascii?q?seIUK/ad9pjvdHbS+e9qxAeQG96KsLQd0aGP7/uocFdDyK7JiGoFfp1IWk1Nou?= =?us-ascii?q?QttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZr?= =?us-ascii?q?KeTpAI7SiNm82/yv95HJbQhFgDSwbalvIBmoogndq8YbjIV/Iast1xXFpWdFdf?= =?us-ascii?q?5Lzm1yP1KTmBj85sa0/JF99ilbpuws+c1dX6jkZqo0VbNXAigoPGAz/83rqALM?= =?us-ascii?q?TRCT6XsGU2UZiQRHDg7Y5xznRJjxsy/6tu1g2CmGOMD9UL45VSi+46ptVRTlkz?= =?us-ascii?q?kMOSIn/27Li8xwlKNbrwynpxxj2I7ffYWZOONjcq/BYd8WQGxMVdtTWSNcGIOx?= =?us-ascii?q?d4sBAfQcM+hWrIfzoEADoQeiCQS2GO/i0CNEimPw0KYn0+ohCwbG3Ak4EtMAsX?= =?us-ascii?q?TUqNH1NKYIXuCw1qXH0S/Pb+lR2Tjm9ofIaAwhoeqXULJxd8rR1VcgFwffglqM?= =?us-ascii?q?rozlOjWY3fkOvWiD9+dsSOaihm09pw1soDWixt0gh43Ni44PxF3J9SN0y5svK9?= =?us-ascii?q?KiUk50e9ukHYNQty6EM4t2RdsvQ29tuCYhz70GtoS0cDQWxJg53hLfauCIfJSS?= =?us-ascii?q?7hLtUeadOzZ4hHR5eL2hgxa+61Svyur5VsWs0VZKqDRKksXUu3wQ0xHe6dKLRu?= =?us-ascii?q?Z/80qhwzqC0wTe5vtKLE00jabbLoQuwr80lpodq0TDGSr2lV34ja+XckUk/umo?= =?us-ascii?q?5P7iYrn8upCQLZV0igblPaswgMy/Hf84PxMPX2id5eSzyrnj8VflT7VNi/06ir?= =?us-ascii?q?PZv4zCJcQHuq65BBdY0p0+5BakFDqmzNQZkmUHLFJCYh6HiZPpNEvULPD3Cve/?= =?us-ascii?q?nUymkC13yPDeIr3hHpLNI2DYkLj/ebZ96khcyBc8zN1E+5JVCq0OIPL0WkPrst?= =?us-ascii?q?zYFQU2Pxa7w+bgFtUunr8ZDHmDGYeFIajSthmO/etpLO6SIMcTvjXVJP8i6Prj?= =?us-ascii?q?y3Q+nBtVZqSt3J0KeFikD/9mJAOfenOqjdAfQkkQuQ9rU+3ujFyLVHhYIWy1Va?= =?us-ascii?q?8m+ioTCYS6AIOFTYeo0+/J5zuyApADPjMOMVuLC3q9MtzcA/o=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0HhAADceCtY/yNjr8ZdGwEBAQMBAQEJA?= =?us-ascii?q?QEBFgEBAQMBAQEJAQEBgwwBAQEBAR+BWLcdgzcFWhiGC4ImUwEBAQEBAQEBAgE?= =?us-ascii?q?CXyiCMxoBgkFSMIEPEhmIU7NVPYteAQsliEGMfgWPXIplkGICkCCRUVU3hiYdN?= =?us-ascii?q?AGIGQEBAQ?= X-IPAS-Result: =?us-ascii?q?A0HhAADceCtY/yNjr8ZdGwEBAQMBAQEJAQEBFgEBAQMBAQE?= =?us-ascii?q?JAQEBgwwBAQEBAR+BWLcdgzcFWhiGC4ImUwEBAQEBAQEBAgECXyiCMxoBgkFSM?= =?us-ascii?q?IEPEhmIU7NVPYteAQsliEGMfgWPXIplkGICkCCRUVU3hiYdNAGIGQEBAQ?= X-IronPort-AV: E=Sophos;i="5.31,496,1473120000"; d="scan'208";a="792486" Received: from fmsmga002-icc.fm.intel.com ([198.175.99.35]) by emsm-gh1-uea11.nsa.gov with ESMTP; 15 Nov 2016 21:09:31 +0000 Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga002-icc.fm.intel.com with ESMTP; 15 Nov 2016 13:06:28 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,496,1473145200"; d="scan'208";a="31313871" Received: from clpowell-mobl3.amr.corp.intel.com (HELO wcrobert-MOBL1.amr.corp.intel.com) ([10.254.74.236]) by orsmga004.jf.intel.com with ESMTP; 15 Nov 2016 13:06:28 -0800 From: william.c.roberts@intel.com To: sds@tycho.nsa.gov, nnk@google.com, selinux@tycho.nsa.gov Subject: [PATCH take2 v2] libsepol: fix checkpolicy dontaudit compiler bug Date: Tue, 15 Nov 2016 13:06:24 -0800 Message-Id: <1479243984-17306-1-git-send-email-william.c.roberts@intel.com> 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 From: William Roberts The combining logic for dontaudit rules was wrong, causing a dontaudit A B:C *; rule to be clobbered by a dontaudit A B:C p; rule. This is a reimplimation of 6201bb5e2 that avoids the cumbersome pointer assignments on alloced. Reported-by: Nick Kralevich Signed-off-by: William Roberts --- libsepol/src/expand.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/libsepol/src/expand.c b/libsepol/src/expand.c index 004a029..815d012 100644 --- a/libsepol/src/expand.c +++ b/libsepol/src/expand.c @@ -1604,7 +1604,8 @@ static int expand_range_trans(expand_state_t * state, static avtab_ptr_t find_avtab_node(sepol_handle_t * handle, avtab_t * avtab, avtab_key_t * key, cond_av_list_t ** cond, - av_extended_perms_t *xperms) + av_extended_perms_t *xperms, + uint32_t init_data) { avtab_ptr_t node; avtab_datum_t avdatum; @@ -1640,6 +1641,7 @@ static avtab_ptr_t find_avtab_node(sepol_handle_t * handle, if (!node) { memset(&avdatum, 0, sizeof avdatum); + avdatum.data = init_data; /* this is used to get the node - insertion is actually unique */ node = avtab_insert_nonunique(avtab, key, &avdatum); if (!node) { @@ -1663,6 +1665,17 @@ static avtab_ptr_t find_avtab_node(sepol_handle_t * handle, return node; } +static inline uint32_t specified_to_init_value(uint32_t specified) +{ + /* + * Things that get &= start life with values as ~0 and get unset as + * they continue life. + * Things that are |=, start as 0. + */ + return (specified & AVRULE_DONTAUDIT) + || (specified & AVRULE_AUDITDENY) ? ~0 : 0; +} + #define EXPAND_RULE_SUCCESS 1 #define EXPAND_RULE_CONFLICT 0 #define EXPAND_RULE_ERROR -1 @@ -1750,7 +1763,8 @@ static int expand_terule_helper(sepol_handle_t * handle, return EXPAND_RULE_CONFLICT; } - node = find_avtab_node(handle, avtab, &avkey, cond, NULL); + node = find_avtab_node(handle, avtab, &avkey, cond, NULL, + specified_to_init_value(specified)); if (!node) return -1; if (enabled) { @@ -1824,7 +1838,9 @@ static int expand_avrule_helper(sepol_handle_t * handle, avkey.target_class = cur->tclass; avkey.specified = spec; - node = find_avtab_node(handle, avtab, &avkey, cond, extended_perms); + node = find_avtab_node(handle, avtab, &avkey, cond, + extended_perms, + specified_to_init_value(specified)); if (!node) return EXPAND_RULE_ERROR; if (enabled) { @@ -1850,10 +1866,7 @@ static int expand_avrule_helper(sepol_handle_t * handle, */ avdatump->data &= cur->data; } else if (specified & AVRULE_DONTAUDIT) { - if (avdatump->data) - avdatump->data &= ~cur->data; - else - avdatump->data = ~cur->data; + avdatump->data &= ~cur->data; } else if (specified & AVRULE_XPERMS) { xperms = avdatump->xperms; if (!xperms) {