From patchwork Wed May 31 18:06:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Carter X-Patchwork-Id: 9757913 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 40ED360390 for ; Wed, 31 May 2017 18:08:40 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 36E5E274D0 for ; Wed, 31 May 2017 18:08:40 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 29794283C9; Wed, 31 May 2017 18:08:40 +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 (emsm-gh1-uea10.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 D529B274D0 for ; Wed, 31 May 2017 18:08:38 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.39,275,1493683200"; d="scan'208";a="7614879" IronPort-PHdr: =?us-ascii?q?9a23=3ApAQwDh9zMgCVVf9uRHKM819IXTAuvvDOBiVQ1KB5?= =?us-ascii?q?0uoWIJqq85mqBkHD//Il1AaPBtSEra4awLOP4+jJYi8p2d65qncMcZhBBVcuqP?= =?us-ascii?q?49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6?= =?us-ascii?q?JvjvGo7Vks+7y/2+94fdbghMhjexe7x/IRS5oQnMq8UbgpZpJ7osxBfOvnZGYf?= =?us-ascii?q?ldy3lyJVKUkRb858Ow84Bm/i9Npf8v9NNOXLvjcaggQrNWEDopM2Yu5M32rhbD?= =?us-ascii?q?VheA5mEdUmoNjBVFBRXO4QzgUZfwtiv6sfd92DWfMMbrQ704RSiu4qF2QxDmki?= =?us-ascii?q?cHMyMy/n/RhMJ+kalXpAutqwJjz4LRZoyeKfhwcb7Hfd4CRWRPQNtfWSJCDI27?= =?us-ascii?q?d4sCDfcNMOhGoInmvFYCsQeyCBOwCO711jNEmnn71rA63eQ7FgHG2RQtEdYUv3?= =?us-ascii?q?TRstr1L7oZXP6vw6nS0TXMcelW0ir65YjKfBEuveuDXahsccbP0kQvCwPEgUmQ?= =?us-ascii?q?qYziJT+V0P8NvHKB4+pvUuKvlXcqpgdsqTas3schkpTFi40ax1ze9Sh13Zw5Kc?= =?us-ascii?q?O3RUJle9KoDZ1dvDyAOYRsWMMtWWRotT4/yr0BpJG0YjAHyI8ixx7Dc/yHdJWI?= =?us-ascii?q?4g77WOaRPzh4gHVldaqjhxmo60igy/D8VtKu3FZWritKjtnMtncX2xzV9seHUe?= =?us-ascii?q?dy8l2k2TaO0wDf8uBEIUYqmqrHM5Mt37E9m5UJvUnDAyP6glv6gaCIekk+5+Sk?= =?us-ascii?q?8+Hnba/npp+YOY90kAb+MqE2l8ykH+s4NgkOX26G+eWzzbHs5kr5QKhMjvIqjK?= =?us-ascii?q?bZq4vXJdgbp6GlAw9V1Zwv6xCkDzi8ytgYkn4HLExddBKdk4fpI03OIOz/Dfqn?= =?us-ascii?q?gVSslzFryOraPr3hGJrNKGPOkLXmfbZ77k5T0hEzzcxB6JJOEbENOvXzWlX+tN?= =?us-ascii?q?bAFB82LxS0w/r7CNV6zo4eW2CPDbWFP6PRql+I4eQvI+iSZIIOtjb9L+Ul5vH1?= =?us-ascii?q?gn8kn18dYbSp0YEQaHCiEfRsO1+Zbmb0gtcdDWcKuRIzTeLriF2GVD5ceWyyUr?= =?us-ascii?q?ky5j4lFY2mCp3DSZq1gLyb2ye7HINZaXxaClyWFnfobYqEUe8WaC2OOs9hjiAE?= =?us-ascii?q?Vb+5RoA8yR6usQj6y7x7LubJ4SAYq4zs1MJ05+zSkhEy8yZ4D8KD3GGRV2t0hH?= =?us-ascii?q?8HRycq3KBjpkxw0kqM0bRijPxCDtFc+/RJUgImOpHG1Ox6F8r+WgTfcdeVUFym?= =?us-ascii?q?WMmpASktTtItxN8De0Z8GtSljhDFxCeqBrsVm6WKBJwy6K7c2WL+J9x+y3bHyq?= =?us-ascii?q?kukUMqQs1ROm26nqR/7RTcB5bVk0WFkKanbb8T0zXK+GeHzGqOp11YUBVqXaXe?= =?us-ascii?q?Q38QelHarc/n6UPGTr+uD6knMwRaxMGeKqpKcMDpjU5cSPbtItvef3mxm2C2BR?= =?us-ascii?q?qSwbOMdoXqcX0H3CrBEEgEjxwT/XGeOAcgHieuuXjeDD11FV/0e0Pj6/N+qHKg?= =?us-ascii?q?Tk8sywGFdVFu2KSv9h4Sn/ycROsZ3qgYtyc5tzV0AFG90srYC9qavQVherlTYd?= =?us-ascii?q?Im4Fpc0GLZrw19MoW7L6FsnV4SaQN3v1nh1x9vEIVPjdAqrG82zAp1Ma+Y00lO?= =?us-ascii?q?dzCf3ZDtIbDXKXP9/BOoa67LwF3e18yW+qgX4vQit1rjpB2pFlYl83h/ydZazm?= =?us-ascii?q?Gc5pTUAwoISp/+SFo49x1gq7HdeCk96Jve1WdwPqmsrj/Cx9UpCfM+yhauZddf?= =?us-ascii?q?N7iEFBPpHs0BAciuL+Irm12zYRICJuxS8rA7P9++ffucxKGrJPpgnC6hjWlf7o?= =?us-ascii?q?FyyEaM9zZiRe7SxJYI2O+Y0RWdVzjnkVeht9r7mYdeZTEdBmC/0zTrBJZNZq1u?= =?us-ascii?q?eoYGEXuuLNCqydV/nZHtX2VV+0KkB1MDxMCmYwGSb0Dn0Q1Wy0sXvWStmTGkwD?= =?us-ascii?q?xsjzEpsq2f0TTIw+TjcBoHPnBERHJ5gFj2P4e0ldcaUFKvbwgzmxuv/Vz6yLRD?= =?us-ascii?q?pKRjM2nTRl9Ffzb3L25+TquwsaCCb9RT55MotiVXVuu8bEueSr78pRsVyTnjH2?= =?us-ascii?q?xEyDA8bTGqtY3znwZmh2KFMHZzsH3ZdNl0xRfe/9zcWedd3iEYSyl8iDnXAEW8?= =?us-ascii?q?Ptay8NWPj5fDs+a+V2O9WZ1IayXry52PtDej721wHRK/h+yzmsHgEQUiyy/70N?= =?us-ascii?q?1qVSHWoxbmfobr0Kq7PPl8fkl1GFD88NB2GoZkkos/nJsQw2QVho2J/Xoblmf+?= =?us-ascii?q?Kc1b1rjjbHoJXzIE2cTZ7xPi2E1nMnKJwIT5W26Ywsd9Ydm6ZX8Z1jg7789UFK?= =?us-ascii?q?ee9KZEkjdtolqksQLRZuBwnjQDxvso834XmOIJtxQrziWGBLAdA1VYMTbrlxSS?= =?us-ascii?q?4NC0tL9Xa3q3cbisyEp+msisDK+Eog5BQ3v5ZJEiEjJw7sllNlLDzmHz4Jn+eN?= =?us-ascii?q?bMddITqgGUkxDYguhNMp0xi/4KiDF7NmL8oX0ky/c3jRJ00pG8poSHLH9t/K2h?= =?us-ascii?q?CB5CKjL1f98T+i3qjatGhsaZxZ2vHpF/FTUTRpToS+6oHywItfn8KgaOCyMzqm?= =?us-ascii?q?2AGbbFBg+f71pmr2jTHJ+1OXGXI2MZzdp8SxWHIkxQnhwUVi0gnpElDgCq2NDh?= =?us-ascii?q?cEBh6zAf/FH4rAdMyuVtNxTkXGfQuhqnajAuSJeFNBpW9AZC50XLPsOC8uJ/BS?= =?us-ascii?q?ZY/oeurAaVMGyUexxIDX0VWkyDH13jO6Oh5d3E8+eGGuq+M+HBbq+VpOxYSfiI?= =?us-ascii?q?2Ymv3Zd88DaUKMqDJH9iAOMn2kBbR3B2B9zZmykTSywQjy/NddSXpRmm9i1ytM?= =?us-ascii?q?+/9PPrWQL06ISVF7RSNM9j+xesgaeML+SQnjp2KS5E1pMQwn/F0LYf3EQMhC5z?= =?us-ascii?q?bDmiC7IAtTLKTKLLgaJYFQIUayZpOMtP9aI80RFHOdTHhdPtyr54kvk1Bk9DVV?= =?us-ascii?q?z7gM6pfdQKLnqzNFPGHkaLL6iGJTPKw8Hxe6y8T6FfjOROuB20ozqbFFXjPjub?= =?us-ascii?q?nTnzSx+vKf1MjD2cPBFGoIGybA1iBnblTNLndh27N8R6jTwozrIqmHzGL2kcMS?= =?us-ascii?q?Jzc0lVtL2f8TtYguljG2xG9ndqMPKElDiD4OnXMJYZq+VrDz9vl+1A43Q61qFV?= =?us-ascii?q?4zteSPxxhSvSqMRho0u/numTzTpnUxpPqjFRiIKNo0piJb3T9oNcVnbc4BIN8W?= =?us-ascii?q?KQBgwRp9R/FN3goa9QxcbUlK/oMzdN6czU8tETB8fKM8KLKnwhPgT1GDTMFgsK?= =?us-ascii?q?USarNX3Dh0xaiPyd7XyVrpc9qpjqg5cBV6FUW0c0FvwADERpBtsCII14Xjk8i7?= =?us-ascii?q?6UkNYI5WairBnWXMhVpJ/HWeiMAfrxMzuZiqFEaAUOwbP9N4sTN4n71Fdlalh1?= =?us-ascii?q?hojKHFDQXd9VqC17cgA0uFlN8GR5TmArx0LlbQat7GUJFf6znx85lA1+bv839D?= =?us-ascii?q?fr/Vg3JUHHqzc3kEk0hdrqmyuRcCLrIKe2Q45WFzL+t1ItPZPjXwZ1cQqykFRn?= =?us-ascii?q?NDbEQ7JekaBtdWVsiA/St5tAB+JcTbFEYB8XwPGYee8k0VJCpSW73UVH//fKCY?= =?us-ascii?q?N+lAs2dp6ht3RA1Bx5Y94xPqHQJ61JzkNMhq2UuC+ozeMxwA4EK0YL7mySZDYC?= =?us-ascii?q?uFYUObk+Oyqo4uts5BSYmzRdY2gDSeAlouh2+UM9IOmP1CPg06ReJUC2OeyfN7?= =?us-ascii?q?mZtHbAlMKSRFM/yF8InVFf/bdqyccjb1aUV0c3wbSMEBQJM8zCJhxLYMpW9Xje?= =?us-ascii?q?ZjyBvvvXwZJyJYm9EfroTeCWvqYOnk2kBBopH5gL7skZA5ajyl/YLcb6I74e0h?= =?us-ascii?q?gi/h7rJE+CDPVHYxKEjisIo9ylzJ92wYlcJisRAWNjPiWr/rzXvBMlgOKfXNcq?= =?us-ascii?q?ZXcXRo8ENnUsWMKknS5YvnNAASK40uIf1QiO9Tj8pj7fDDPkddpseO+UZQ9wCN?= =?us-ascii?q?Gx4Tg/6La5iVrW8pXYOmH7Os9vtcPI6eMfu5mIEehUTaVnv0fahYZYW2SgU3TT?= =?us-ascii?q?Ht6tO5jwd44sYMT3CnagUl2wkTQ1T9vxPNu2IaiIhhnoSppOvImdwj8jKde3Fi?= =?us-ascii?q?sCFBdou+ED+KV8aBUfY5o6ZB7osBg+N6y/IQqDz9quQmasJiFNQPVFy+W1eaBX?= =?us-ascii?q?xTI2buCm0HsgUo06z+6v/EEXQJEKjw3Ryui7aIlbUSnzHHtdewPVqicijGdhN/?= =?us-ascii?q?w9wuEmzBPGrFkQKTaLe/J1aGZcpdEzGUuSIWlqCmo/X1KTlpTM4gi30r8I4iRd?= =?us-ascii?q?gchb0fdesHfkpJ/eYCigWKuxqZXaqyAgd8Qpo7VtMYz/JcuLrJzeniHeTJnUtg?= =?us-ascii?q?2KTiu6GuFHlddOOy1YQeNHmWc/NcwBo4pB5lI7Vt0iKLxXFKksureqZCJ+DS4U?= =?us-ascii?q?zC8WS4OA3DsGguenw7XUjwqefo4+PRIDq5hNntwdUytqbSwEv6+jS5/al2maRW?= =?us-ascii?q?gXOA0T9xhD5Boclo9seeDo+JDIQ4JRxDNNrPJ0VyTKGoNu91TlVmGcmUL4R+m5?= =?us-ascii?q?k+y1wQJSy+rh0sMBVx5lDkhS3P1bllcyKL5tNakfoIrKsj6OdUP1uGLtyeSmJF?= =?us-ascii?q?lNyc3abVL4Fo/FuXD6UiIC5X0eXZVPx23HFZQOjwp5b74mpVtWLI+6ekb+5jkk?= =?us-ascii?q?x4VzELm7Ts2rxkgqomgYSCuwFNpBEe5mukrNWDJ5e5CrtInlO5JKT2BK4p2dtl?= =?us-ascii?q?FZnF9uMyOiyJpcKsBN4iIXUzRVpzWSoseyQtVZ2cBqF58MPst/u3DlFaNFPpiR?= =?us-ascii?q?v2M5urjxxX/c5T88rE26xTWoFq+/V+JW4WseGgAzKGSfrkkgFOws82jI/lDKqF?= =?us-ascii?q?B08P9RBqKTgkVpvDZ9ApdOCy5G1XC/NVtzSmVGvv5bKKTSfc1cReUyZR+xNBw/?= =?us-ascii?q?E/4mw1KG/VtukXf/fSNyqhNQ+zrBUAksSSkVnrDtlCUCqsGgPD8XUI5IYSkkby?= =?us-ascii?q?jeMQ6bnz5YvApHYUFwR58ZGspF+60c3YZM/srNU1ysJjsBXBN/LQ83zORQlVZb?= =?us-ascii?q?sEqGfSDSExCoeezIsh1tcsebtNSpI+jh/AdbloPnt/g196cER3K4ggCiXM7Rr5?= =?us-ascii?q?Tiud2QqkuBarr3P/e6YXDfUDjGlQqwiqs8D5nW4yjTNxJWJIJ0yXU4fZTsC3PH?= =?us-ascii?q?MBpdKq0HIEpbULx1Zs9douBGfcNkfrgG+bN1DBKdWhzvAJCvrOVBLlvLXzTRMT?= =?us-ascii?q?iO8uylroLP9rHdTe/gZtKSyHrZX613OYp15ifhF7fsz4Be5lL82u1x+UNiVVjG?= =?us-ascii?q?LyeBocz5JgMQ+MmtbFbtvoEyEDPNB5dwjWDtyV1eeMoRXy2q6o4XyJdD5Hb3U+?= =?us-ascii?q?J43VD5sPdO+Ll89Yk3/7dpxN+oJafIN/tVr1JoDwOJBgVu6pUtGnJwR35QYu8W?= =?us-ascii?q?LPfeY7gZgdrpq+DtGKwd8AeV9PBBadvbO0HBndGyCjOGRhxemwcBsjoaIRGC1/?= =?us-ascii?q?Oenq90VMKlpfT42k0x4lixNBgGzKt36YeD4KqIq/fdbwHNwrgcRqjqWsTzo6wu?= =?us-ascii?q?u0yI4/0kmqQOemtobAK5C+UdStQSxmH7zaAt1y4sFd3MH6748v5ZS305hi7gm4?= =?us-ascii?q?x6H1gOHPMUGaGG/YVYnmc9geDZN9sWcq5YmmmVDh6kDqUCyWO35CuLPWllmA/B?= =?us-ascii?q?3wv3QWOp41/8tTV4TjfUz9f/jkpVUaG6BUFTXyW1Pk94tCmAPBHyuNr2vqQ161?= =?us-ascii?q?o2Mnf/udKIm2agN6lbH8rlJNyTOSM0vk4YjIUtRtyz3oAWAcayL80V8H5gdfve?= =?us-ascii?q?92Oqkyharqdcm4Xe49+a+vPLHXmhlaKWsbONyy5EynIgp1Ew9sigNu3S592NW/?= =?us-ascii?q?mo030RTyJ/tgbaUR66tKHUr1cOOUORyEfLgosKPtNH0nYkykHq/u8jQMg89A9G?= =?us-ascii?q?DIbPe+sCpSzvODvz2VufYdM3ViyF3jtSAF30EUd3GLI92GL2s8LFj3HQ9EM0Ro?= =?us-ascii?q?NobUzomQR3D5kkKUIq8FUXwysCHhIXZh+HF7yoHlrqLZcaWkcfcxiH26K6eqgv?= =?us-ascii?q?101p3ryv/PPTbfB7B6cVLfldjxWOnVZBFZIUsK0eXKp8dEVA9K7TvQXtF4/nUO?= =?us-ascii?q?X4mnUqKP21WMda8doDuHc45Qa/XRWg449Z77kHkJCIarJEYZ/UscBk9Uhn+SIA?= =?us-ascii?q?dixDgRh4lRO5UvkQpPv97djfsZqo7PuuVak2SuUP7Rc0G3hxj5v+gVAku9HX1P?= =?us-ascii?q?1QSo7LhoTl9gBCPXqKtJzd0xlmJuoEM5irc6p493UbOygeIGoDPcaMa/Yi5y9i?= =?us-ascii?q?KjPT6EJZD8wRZNMYM8vNmRxOhU3yQr5T7NfbFkWeC4hta8Ai93D3xywt8ZsgTu?= =?us-ascii?q?bg7ye7JZ/F4FFXIfxDkCVsmcnGpOgU3frdFigX7mOEaxhu2C+CzYeCC+ro9+WW?= =?us-ascii?q?1N7UT08GHjIxU4pFKzqN5wqnRvaylJXuVQ+U8dH8gJY/dEKWW3ywk78IsqJSHu?= =?us-ascii?q?5aiiT0xCJSFobriPKJq9Cs8ndYtkVbEIZv6h3IALlQPpdhNhvkjcSkWk98Bi/7?= =?us-ascii?q?eMHVaBUuovaWyfkQ7OV+LUf+YpUbIh0cwbLg9XVVVhduSKLxvluBWOIRY91mSO?= =?us-ascii?q?/Lrn9L8o9gLq4PM0KbpJP0sjdJplc2ABUqaL8rtDBacFfBnBFNUabupLEAkhcc?= =?us-ascii?q?UcJ+uUJUFmK/JHk+5yHeWapIg6efDv0V8jOOTq0BSEhoPSZ+TAmz2JpwYbepmu?= =?us-ascii?q?pHsmxelCNnvPcqyyBmRAe7uSD0paIN3jIg+LeiuDoduXxFSvienDrJCFVCyvQK?= =?us-ascii?q?lqQcC3f55FyiYXkDcpH94L16KsTh74Uh5WowYQk7dS0cQeugEz3wj7+PAoGXsd?= =?us-ascii?q?JcmgSCuMPVYL+3MCgdK7U9yRX4R3Rn1Qjehhlo+nMRQjq89N8kOJm9OcE9yyqq?= =?us-ascii?q?B2fbelgM4qdSvcr/r1ELSvU5aU97zGVlzMeHWjUHRNbTFGYtkggkdWJEfYpM6R?= =?us-ascii?q?8eEKkpjCiHvq1C/gwPezfUFYKl+ojMksvS33kyU8tqzHrMpqKZnpMqzGFlm9Rs?= =?us-ascii?q?4y6MuHQTd/TYU8hoAnjyyodQ1/fzZ/CssuAbUotp1q6tUPgYMsms4WG2wollWl?= =?us-ascii?q?e5xrQCGFq0KPMDxrbeUyq+VW2YWPiEc2uSkDY9KELy4wenLkEvYsdQs0A9KvfC?= =?us-ascii?q?hoJblwD5VLN0RyaQpVzczGE4M+MVbQE2uIChewMUSu4dfe6cKvYywPcmElsDc2?= =?us-ascii?q?fJHTdqC++xqVOih5Z0O3N84UjheuTt9gfmMMeOGhkaD4HVs4R9+fugRmKOIXVg?= =?us-ascii?q?1gF9PFFo9+fDEFQ8rvdcc5GVndfKndR63+kFd/NjMSAmv94TnYVj6ZKK38iWax?= =?us-ascii?q?HRyY3yJcrUovieDP3T1UMqentVUrABewP6+506PsIlW73UBbZZswoTBaw7QJw5?= =?us-ascii?q?KWj876B1LAJ2cg7Ueru0mM3qqfyRaptTvX/W4Uo6LD3AtB0b1vy0UQt7Yoikhn?= =?us-ascii?q?XqOpAwRy5OoMN2BxtjHYtPB9kAoBS9D56TgqG7hMe7+1lmtO8SrarwFvfK2cy+?= =?us-ascii?q?34V1QZdX/lSLPDLLC6lwnkRlj/i9guva0pbvF8zuY9UEW/ZnQmTdcL/JAp2/Ki?= =?us-ascii?q?6SOsL7Y0NG97+c0LRkUhSefSz5W6uGtDa4NPV/+kg7y5Z3fOzUzDA36LHbwtTy?= =?us-ascii?q?bXlBpii/tX6JKIdf7FvSCOzFQR1UTfuF8GB4HawYaof6+/sOMdw8z9iG/QZz9C?= =?us-ascii?q?5N3dCGI6e/tE/M3Fx0dZbAI0v01CY1Q44KIA6wMUE0m2/WtmzdAWhALsijMcRt?= =?us-ascii?q?hcyaAQDt50lwn2EtYXVMGnTpRdeXJ2cb38O+ZAuX9ANEFdoDmPS3eUEgvK2oVe?= =?us-ascii?q?ZoIolFmfmttLgfk9ZmMSLPRM9BMCzLMb92OCZRDuXIpFg1bR4Es6Q1Vp0zZZeQ?= =?us-ascii?q?PEMNKF2Axj/qzQvezU30cMSh1KmTLykN6HVHzqzK0TxXqgmnvfaWmNbjULHEbJ?= =?us-ascii?q?3sWv7dLjYlXCmARTsuCUap5Uuku/0csfqaJGcfpUoUYjiTCA4Iva1vq8LfDmrN?= =?us-ascii?q?lu1iZpEKg+qaWy/oQi1iiKUyHjpLtVyLQ/cbDgnWYXrhj3ZdtQGhPfJM42zqb6?= =?us-ascii?q?eZxqtUXOwWBJFAcvuHTNvEKrhiIGIzmzEYPvusV8HNpLY+lFTTRC0WFLeb2keZ?= =?us-ascii?q?SRu0S/mR3HrAVJ8JspJ87ig38dvKgnVfD7XDP7HZoSWntIG/knDL6qXlSmAxbh?= =?us-ascii?q?lt06o5C26bzUwFcjkJ?= X-IPAS-Result: =?us-ascii?q?A2F6AgAiBi9Z/wHyM5BdGwEBAQMBAQEJAQEBFgEBAQMBAQE?= =?us-ascii?q?JAQEBgwEpgV0Sjn2oeyqIa1cBAQEBAQEBAQIBAmgogjMkgkkCJFUDCQIXMQgDA?= =?us-ascii?q?WwFiAVOgUUNrig6JgKLWohBiFSFJgWBLAGcdAKTGw2LIoZVlE5YgQonCQIfKVV?= =?us-ascii?q?xg06CX1qJUwEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea10.nsa.gov with ESMTP; 31 May 2017 18:08:02 +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 v4VI5k9V017532; Wed, 31 May 2017 14:06:26 -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 v4VI5dPX069950 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 v4VI5da4017529 for ; Wed, 31 May 2017 14:05:39 -0400 From: James Carter To: selinux@tycho.nsa.gov Subject: [PATCH 1/2 v2] libsepol: Clean up scope handling Date: Wed, 31 May 2017 14:06:32 -0400 Message-Id: <20170531180633.19008-1-jwcart2@tycho.nsa.gov> X-Mailer: git-send-email 2.9.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: Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP Currently, when checking if an identifier is enabled, each scope in the decl_ids list is checked. This means that if any block that requires the identifier is enabled, then the identifier will be treated as being declared. Now, declarations will be kept at the end of the decl_ids list and when checking if an identifier is enabled, only the last scope will be checked (Except for roles and users which allow multiple declarations, they will have to keep the old behavior.) Signed-off-by: James Carter --- v2: Removed duplicate declaration libsepol/src/avrule_block.c | 23 +++++++++++++++++++---- libsepol/src/policydb.c | 13 +++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/libsepol/src/avrule_block.c b/libsepol/src/avrule_block.c index 224e999..5a873af 100644 --- a/libsepol/src/avrule_block.c +++ b/libsepol/src/avrule_block.c @@ -156,20 +156,35 @@ int is_id_enabled(char *id, policydb_t * p, int symbol_table) { scope_datum_t *scope = (scope_datum_t *) hashtab_search(p->scope[symbol_table].table, id); - uint32_t i; + avrule_decl_t *decl; + uint32_t len = scope->decl_ids_len; + if (scope == NULL) { return 0; } if (scope->scope != SCOPE_DECL) { return 0; } - for (i = 0; i < scope->decl_ids_len; i++) { - avrule_decl_t *decl = - p->decl_val_to_struct[scope->decl_ids[i] - 1]; + + if (len < 1) { + return 0; + } + + if (symbol_table == SYM_ROLES || symbol_table == SYM_USERS) { + uint32_t i; + for (i = 0; i < len; i++) { + decl = p->decl_val_to_struct[scope->decl_ids[i] - 1]; + if (decl != NULL && decl->enabled) { + return 1; + } + } + } else { + decl = p->decl_val_to_struct[scope->decl_ids[len-1] - 1]; if (decl != NULL && decl->enabled) { return 1; } } + return 0; } diff --git a/libsepol/src/policydb.c b/libsepol/src/policydb.c index ab3b31f..691101e 100644 --- a/libsepol/src/policydb.c +++ b/libsepol/src/policydb.c @@ -1720,6 +1720,19 @@ int symtab_insert(policydb_t * pol, uint32_t sym, return -ENOMEM; } + if (scope_datum->scope == SCOPE_DECL && scope == SCOPE_REQ) { + /* Need to keep the decl at the end of the list */ + uint32_t len, tmp; + len = scope_datum->decl_ids_len; + if (len < 2) { + /* This should be impossible here */ + return -1; + } + tmp = scope_datum->decl_ids[len-2]; + scope_datum->decl_ids[len-2] = scope_datum->decl_ids[len-1]; + scope_datum->decl_ids[len-1] = tmp; + } + return retval; }