From patchwork Fri May 11 00:52:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Casey Schaufler X-Patchwork-Id: 10394415 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 DD61060170 for ; Fri, 11 May 2018 14:40:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CBF4328E95 for ; Fri, 11 May 2018 14:40:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C086928EC0; Fri, 11 May 2018 14:40:41 +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.4 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,NO_RDNS_DOTCOM_HELO,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from ucol19pa09.eemsg.mail.mil (ucol19pa09.eemsg.mail.mil [214.24.24.82]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D9EEB28E95 for ; Fri, 11 May 2018 14:40:40 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.49,389,1520899200"; d="scan'208";a="695327521" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.3]) by ucol19pa09.eemsg.mail.mil with ESMTP; 11 May 2018 14:40:39 +0000 X-IronPort-AV: E=Sophos;i="5.49,389,1520899200"; d="scan'208";a="13190261" IronPort-PHdr: =?us-ascii?q?9a23=3A2qN+ZRCWOfNXcRNBKX1sUyQJP3N1i/DPJgcQr6?= =?us-ascii?q?AfoPdwSPr7pMqwAkXT6L1XgUPTWs2DsrQY07GQ6/iocFdDyK7JiGoFfp1IWk?= =?us-ascii?q?1NouQttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBA?= =?us-ascii?q?j0OxZrKeTpAI7SiNm82/yv95HJbAhEmDSwbaluIBmqsA7cqtQYjYx+J6gr1x?= =?us-ascii?q?DHuGFIe+NYxWNpIVKcgRPx7dqu8ZBg7ipdpesv+9ZPXqvmcas4S6dYDCk9PG?= =?us-ascii?q?Au+MLrrxjDQhCR6XYaT24bjwBHAwnB7BH9Q5fxri73vfdz1SWGIcH7S60/VC?= =?us-ascii?q?+85Kl3VhDnlCYHNyY48G7JjMxwkLlbqw+lqxBm3oLYfJ2ZOP94c6zTZ9MaQX?= =?us-ascii?q?dKUNhXWSJPH4iwa5IDA/cdMepdqYTyoFkBogG+BQmrA+Pj0yZEi2P40KA7zu?= =?us-ascii?q?gtCB3K0BE9FN4KrnjYsND5OaEPWu630abI1y3OYe1Y2Tn964bGfB4urv6OUr?= =?us-ascii?q?1sfsTf1FEvGgHYgliet4PlJCiY1vgPvmWB8+ZsSeyihmwhpgpsojav3MAsio?= =?us-ascii?q?zRi48L0F/E7jt2wYYoLtOlVEF7YcSrEIZetyGeKYR2WN4pTmZ0tykg0b0Jp5?= =?us-ascii?q?66cTMRyJs7xx7QceGHc4aM4h39TuadOCt3i2h/dL2jgBay9FGtx+vhXce3yF?= =?us-ascii?q?ZHtjdJn9bDu3wX1xHf99KLRuVy80u/wzqDyhjf5+BGLEwuiKbWKposzqQxm5?= =?us-ascii?q?cTq0jPADH6lUrwgaSLbEsr4PKo5P7iYrj+o5+cMJJ7hR/mP6Q1n8y/Hfw4Mg?= =?us-ascii?q?8TX2iH4ei81KPs/Un+QLhSkv05iLPZsJHHJcQAvKK5Hw9U3Zoj6xa4FTum1s?= =?us-ascii?q?gXnWIbI15ffRKHjozpN0nPIPD+E/i/n0yhnCpkyv3JJLHsAojBImLdnLruY7?= =?us-ascii?q?px8VNQxBI2zd9F5pJUDr8BIOj0Wk/0rNHYFQE2Mwi1w+bhFdV82ZoSVnmIAq?= =?us-ascii?q?+ENqPdrUGH5vk0LumQZI4apDb9K/8/6/7oln82g0URfaau3ZsJcHy4BOhpI1?= =?us-ascii?q?2FYXrwhdcMCWUKvg04TOPwlF2CUSRcZ3CpUqI+4TE7DoemAp3YRoCxnrOBxj?= =?us-ascii?q?y7EodRZmBcBVCGCW3oeJmcW/cQdCKSJddskj4GVbe7V4Ah1gqutAj8y7pmMO?= =?us-ascii?q?rZ4SMYtZb+1Nl6/OLTiBcy9SBpD8iH1GGNVW50lHsSRzAqxKB/vVB9ylCb3K?= =?us-ascii?q?l2gvxYEdlT6O1TUgohO57T0fF1C9foWg3bZteJUlGmQte4Dj4tUtI92dgOY1?= =?us-ascii?q?xyG9+6lBDMwzKqA6MJl7yMHJE7777T3332J8Z713bKybIsj0c4TctVNG2nh6?= =?us-ascii?q?l/9w7JC47PjUqZi76gdb4A0y7V6GeD0W2OsVlFXw5sS6rFR2sSaVfRrdT8+k?= =?us-ascii?q?zNVaSuCag9PgtH18GCNrNAasf1glVeWPfjJNPebnqvlGeoHxmI3LKMbJHxdm?= =?us-ascii?q?UFxirdEkkEkxsL/XaCLwcxGjmur3jZDDx0GlLle1ns/vVmqHOnUk80yBmHbk?= =?us-ascii?q?1g1rqy/B4YnvmcS/cK0rIFvictsTN0E0yn39LVCtqAuRRucL9aYdwj/FdNzX?= =?us-ascii?q?jZuBBlPpy8M6BigUYTcwptv0z00RV4FoRAkdMxoXMv1ApyKLuU0EhPdjODx5?= =?us-ascii?q?zwPafXKmbq9hC1d6HWwk3e0MqR+qoX6/Q3sVbjvAa0Fkc58HVoydpV03yB5p?= =?us-ascii?q?nQCwoSS53xWF4t9xdmv7HafjU954TM2HJ2LKa0qD7C1MwzBOY+0BmvY9JfPL?= =?us-ascii?q?mDFA/oHM0QH9KuJ/Aym1i1chIEO/hf9LQpMMy7bPaG16urPel6kDKgk2tH/J?= =?us-ascii?q?h30liQ+CpkVu7Iw5EFzumD3guJTTf8i0yhstzslIBfYzESGWS+yS3+C45XfK?= =?us-ascii?q?Fye5gECXu2Kc2t2tp+n4LtW2Jf9FO7CVIJwsupeQaMYFznxg1dzloXrmK9mS?= =?us-ascii?q?Sj0jx0lislrq2F3CzB2+7ibgYIOnZXRGl+ilfhOY60j9EeXEiscQcpjwCo6l?= =?us-ascii?q?zkyKhBo6RzNW7TQV1HfyLuNWFtTrOwtqaeY85I8J4oryRXX/igYVCdUL7xuQ?= =?us-ascii?q?cV0yPkH2tYyzA2bDWqupT/nxNgkmKdK2x/rH3DecF/3R3f/sDTReZN3joaQy?= =?us-ascii?q?l1kT3XBlmnP9m15NmUjInMsuS/V2KnS51SfjLmzZiYtCu6421qAAGwn+uplt?= =?us-ascii?q?3hDwc6zTfx18N2WiXQsBb8fo7r2rygMeJgekloAEHz69BmFYF5nIo9n4oQ2W?= =?us-ascii?q?UGiZWO53YHln3zMdpD06LkcHUNXSILw8LS4AX9201sMHSJx5niW3We3MRhYc?= =?us-ascii?q?K6YmUI1SIh9cxKD72U7LNclytvvlW4tR7RYeR6njoF0fsh8mMag+UXtwo11C?= =?us-ascii?q?qdBKwSEldCPSH3ihSI9M6xrL9MZGq1ariw01d+ncq9A76crAFcX2z5epg8Ei?= =?us-ascii?q?Nq6MVwLk7M2mXp6o74YNnQcc4TthqMnhfeiehaNYk8luQMhSV6OWLxp3slxP?= =?us-ascii?q?AnjRZ2x5G1oJCHK3lx/KK+GhNYLif6Z94X+jz2kalen9qW3oC2EpVvADoLWo?= =?us-ascii?q?HkTfWyEDIdrf7nLRqBECUgqneHHrrSBQGf511gr3LTFJCrMmqaJHcHwtp/Qx?= =?us-ascii?q?mdPlZQgBgOXDU9nJ42CBylxND7fEd+/DAR6UbyqgFQxeJwKxn/TmDfqR+taj?= =?us-ascii?q?guTJifKARZ7h1e50jPK8OT9eRzED9E/p26sAOCMHSbaBpSAWEPREOEG0jpPq?= =?us-ascii?q?Oy6tnY7+iYGu2+IuPAYbWUt+NRSuyIyoip0ot6+DaMLd6CMWN+AP0+wEZDWm?= =?us-ascii?q?p5G8vBkTUVVyMXjz7Nb9KcpBqk/C13tNqw8OzzWA/064uPCqFSMc5z+xC4gK?= =?us-ascii?q?eDMfSfhCBlJjZZzJwMwWXEyL8F3F4dkytubSWiEawctS7RS6LdgrdXAAAAZC?= =?us-ascii?q?xtMstI7r483g5WNM7alNz6yKB3guQyC1dfWlzrgtupatASI2GhKFPHA16GO6?= =?us-ascii?q?+dKjHMx8H3YLi8SaFLjOlOrB2/pyqUH1X4PjudkznpVhavMfxDjSyAIBNfuJ?= =?us-ascii?q?u9cgt2CWT5QtPpcAG7MMRwjT0w27E0gWnKNWEEOzhmb0xNtqGQ7T9fgvhnAG?= =?us-ascii?q?NB73VlLe6CmyuC8ubXNI0ZsfpxDSRyje5a5246y7RN5iFeWPN1gDfSrsJpo1?= =?us-ascii?q?y+iOaPxSBoUARQpTtQg4KLpVttOaPc9pZaWHbE+AkC7WKfChgQoNtlENLvsb?= =?us-ascii?q?hKytfTjKLzNCtC89XM8MsAAMjULdiLMGAmMRvoBjHUChAKTSSsNW7BhExQi+?= =?us-ascii?q?2d9nqQrpcmsJfsg4YORqVdVFMrCvMQEl5lE8AaIJdrQjMklqaWjMwI5Xu+tB?= =?us-ascii?q?nRQ8FavpHbVv2MGvjvLTeZjaVeZxQW27/4Kp4TNoLj0Ux4dlZ6hJjKG1bXXd?= =?us-ascii?q?1VoS1gbgs0r1tW/Xh7SW0z1UzlZR2x4H8PFf60mRs2hRVkbeQr6jjs/089Jk?= =?us-ascii?q?DWqysojEkxhdLljCiXcDHvNqiwWZpbCynzt0gqLpP0WQB1bRaxnUxlLjvEQa?= =?us-ascii?q?xej6d4f2BxlADcoYdPGeJbTaBceh8f2+qXaOsy3lRGtiqnxVRK6vDECZt4iQ?= =?us-ascii?q?QqdpCsr2pa2w19bN85P6rQK7RVzlJInKKBojeo1vwtwA8ZP0sC7WSSeCgOuE?= =?us-ascii?q?MVKLYmIyuo8/d25gOcgTtDf3IAV/0wovJl7kk9IfiPzzr8075fLUC8L/GQIL?= =?us-ascii?q?mHu2jBiMGIWUg92VkSl0lf+rh339wjfFSIWEAy1ruRFggJNMrYJQFTccVS6G?= =?us-ascii?q?DZfTySvuXV3ZJ1I4K9G/jsTe+JrqYbnESkHQcuH4kX4cQBGISs3FvfLcf9I7?= =?us-ascii?q?4P0Q8t6xjzJFWZEPRJfwqGkCwZrMG7zZ9325RdJz4GDGphNiW346rYqRUxgP?= =?us-ascii?q?qfRts2ZGkVXpccPHIsRMK6gzJZv2hHDDSvzuIZyQ2C7zjgpiTQDDjxdMdsZP?= =?us-ascii?q?aUZBx2E9664zM//LaqiVTP6JXRO3n6Nch+ut/I8e4VvZKHC/JIQrZjq0jcno?= =?us-ascii?q?lZR3qtU27JC9G4PIP/a4g2YtzyE3q6XEG/hygzT8jvINanNrKIjh3wRYZIrI?= =?us-ascii?q?mb2yguOtSjGTEYABp/vfwM5Lxiag0ZeJo0ewTotgQkO6y4OgeY3c2kQ3yxJj?= =?us-ascii?q?tOU/lf0eK6aqRYzyoxb++6zH8gQY8/z+Ss7EECWooFjhDEyvalfYVeVjLzGn?= =?us-ascii?q?NFcQXVuSU5j3RhNvo1wuon2hPIt1gcPCyLdOxubGxEpMkyC0qPL3tsFmc2QE?= =?us-ascii?q?SRgpbE4g6pw78d5TBdn8pO3e1Drnf+oofVYCiwV6yztZXVry0gYMA8o6JrK4?= =?us-ascii?q?zjJdCJuYjCnjzFVpbQrBOKUCq7F/pcldhQJCNYQPZImWE5N8wJo5BB6U8rWs?= =?us-ascii?q?c4ObNPFLEmpqq2Zjp8ES4S0SgZWpuO3TAYnui827ralhKRcJs4MxwJq5RCjc?= =?us-ascii?q?UDXCFoeC8eo7WjV4rOnW+eVmcLOBsT7RhL5A8Yk49/ZPrl4InWQ59Qyj5Wpf?= =?us-ascii?q?10XzDFF5Zy8Vv0VmWWgV/lSPq8iOylxwRSw+zw0tMDQh5wFVBdx/pKlksvML?= =?us-ascii?q?x4MbMQvpPMsjOSdkP3p2PtyOqnJFlN0sLYbVv4A5TZtWDkSC0T5WUURZNTyH?= =?us-ascii?q?HYDZkSkgx5aLo1q1VIPo+mf1jx5yA+x4VpBLS4UtiryEgjrXYDXSiqEt5BBP?= =?us-ascii?q?phsFPYQjFlZIqrqJr9MZVIXmBQ4IGdq0tekEh1Ly65zp9cJtpR4jIQWThAui?= =?us-ascii?q?+RvN2sR81fwcV2FYMDIs9ju3fhH6NJIJiRrGcsurP1zn/W5isxv0qkyzWrA6?= =?us-ascii?q?+3UeZZ8HMEGgkzIGSesEYvBfM28mjO6lDNrkx0/+BDC7iNikV+vi1wEY1QCT?= =?us-ascii?q?ZSy3+lNUhzQ2dbvOlALqTabdBcSeEoZRCzIxw+CeIm30uR8EFogHj2fi1yuR?= =?us-ascii?q?Fe+y3GQwY0UiwVjav3lj0FtsGrIzkaRIxUbT85dSfKNxqbmTxLvBZYc0xlQJ?= =?us-ascii?q?4ZDcpZ97wZwIdZ8NHPRlqrKSEAQBNtLBk40eZFmU5FrkqYZTjXDRC0evbXrh?= =?us-ascii?q?13YcCRodazLPvn4QhHipnosPwj+qUHQH2mhxOiTc7CoI/7q9KFqFGCdKHmPO?= =?us-ascii?q?2geXXBViTDjQishbc4CJnH5zDTMBFHK5Zg1HUkfYPsCXXMPRRbPaIUO1RUVa?= =?us-ascii?q?ZmadVcuO9aY9VoeKET+a9iHhiHXA/gGJSzrPlaKVbeXSjeLz+f/eOhvI3e9q?= =?us-ascii?q?HdSez8ZsyW3XnHXaN3PpB+6TblB7fmy4he+lD52v117EN1VUDGMzydrNTmPg?= =?us-ascii?q?4L5tOtdlHlvp0yGTPZGolwnWHoxkFdc8oXXyyq/4gZyJxD7nbwUvh00k/psO?= =?us-ascii?q?1d77Nk85U446h1yceoIqffMfZavlVhAhiaHAVq8YgiD3ZkSmBNeOARLuzRfa?= =?us-ascii?q?MDgcDote/3C7Qd6AeJ9OxBddvHO0bBl9G5CjGYUhFEnQEBqTsAIgud0f6Flb?= =?us-ascii?q?V0Rty+pejlwEIt/kSxLgIbzLB3+4iI4K2IpPXYbxHJ17gLRrDqRt/vrrQro0?= =?us-ascii?q?6S4/wkm6IJemxxeQKnC/IRVs8axmfn1qAq1jkhE8bMErPv4vJDUGg5nj34kZ?= =?us-ascii?q?BnA1oWAu8UHaaM/YlGgmg3gejZOcMNcqBemmePEgWpEqQexn6q9SSXJnVlgh?= =?us-ascii?q?DU3B3qR2O88kP2pzdiQSTQ19fjjlZVVr6vCEdWRCqpPE91vSiBPAX2qdX3vr?= =?us-ascii?q?4141suMmz+s9KNlnWuN69LH8HlI9ycOyY0rkoNjJItXtyvxZwbGd2lLdcT8X?= =?us-ascii?q?F+a+DT62a1nC5BvahHnYve4sea+vnNG3mvkbGaoa2XxD9E0ng4oU0/6te4O/?= =?us-ascii?q?HP5tyFWe6n2HoKQidkpQTBQwC6paDBo1ATI0yL31/BmJYWMdFBwXk4ykbm6f?= =?us-ascii?q?A4T9Iy7wVfGJzPZ/EDpTDvIDv720ufY9YsWyaC1DtYA0z6HkNlGKgm32Lwpt?= =?us-ascii?q?jGmW3X+10ySYl6b1bnigBvD4UkNUIt70AawjIZHggRdR+bDL+pBUP/LYsHTE?= =?us-ascii?q?QDcgqI3Ly7eqcxwE1yzaii5PfJYuxgG6UNNvhcjgmUnFhYAJ4WsrMRQKh6e1?= =?us-ascii?q?BD8K7bvA/iC5LoX/L+j3o/KeW1QtxG8cAer3Yi7RywRwC+5pdf77YWk5SIdq?= =?us-ascii?q?9YYZfSvMBz9Vpn5SUVeixLnhd/kwuzUfoAq+D7/tjbrJ2o5/6hVKkzQeUX6x?= =?us-ascii?q?80B2N5g5vrnl8jpdDX1+FBSozakon/9B5CI2SKuYnAyRV8L/QBK56zdrZ663?= =?us-ascii?q?oHPzQeJ24JPdeOd/Y84TViPynI6lNeBcMMYdcYPMvTlgBOlk3mRq1c9srBFl?= =?us-ascii?q?+fEYdzeNgi73DrxzAt7Zs8TuHg5SezJZDY6VFNI/xDgzt3mdLHpega2/zSBz?= =?us-ascii?q?YL4XiXbBh12CCCy4KXB/b24+qM1MneV0kaES4uT4ddOD2C9BSoRuWpj5XpSR?= =?us-ascii?q?qY5NL8jpw4dUKQQGGxnasev6ZDFO5PkCP70SZEGoDynfKVvMKm6HFLuV1fDI?= =?us-ascii?q?Zz8RrFFb1dPpV8ORT4kNOnSVR8Biv7ZcHbaxsvuOuQxucX4OV+NlDzZZEaIh?= =?us-ascii?q?Ia0b367WdaTgp0RL7woFmZQfobZMF6R/PcsnBV9YVgJrcOPFiDvpPqqCxFqF?= =?us-ascii?q?QrAAA0ab8wqSdaelPJnA1PVKb+oKQAhRcEUd5lpU9MHnq9OGAg6DrJW6RViL?= =?us-ascii?q?KcCfIP/TWVUKMOT19kMiVgTBOpwJ9uYaemnehbsmNamSNwuPcq0zhhRBqypy?= =?us-ascii?q?Lso6YN1Ck7+LG/sjUBuGBKQv+YkyjWFVVJ1O4KgrsEC3b+9Vy8Z2EObI7z4L?= =?us-ascii?q?lkJsTg8pIs43YlbhUgeC0GW/qvCyfqg6OOHIOPrMpWhASRt8XWcb+zMS8SO6?= =?us-ascii?q?wmxh39QXh9zhPTnA1s8GsMXjWg8MEkK5ugNso/wSqoA2fbfk4W4qxVqMvxqU?= =?us-ascii?q?ILTOwuZFN5x2Vj1tKIRjcDRczIH2Y1gBMpaWBDcJJE8h8VCbUngiyPvqld5Q?= =?us-ascii?q?EUYTHUEou/9onXh8fI1mE3Tc12yWLOuq2FmpQq3WVrm9xq6i6OuWwSePLDXs?= =?us-ascii?q?5tA3jz04JfxvLkZ/WprO8LUoxmyK6uUPUaKMms5XO22Il2Wk+i3rkfEUK5MP?= =?us-ascii?q?UCxrjHTSioUmiYWeWXc2iWgTk1KEny5QOnLlcvcsdFs1c9Mvfehp5bjwDhVr?= =?us-ascii?q?d0STuLqF/DyGwsK/gadx43uIi7ZwwKVvAeaPaGKego3vI+FEMGb2XVEituF+?= =?us-ascii?q?+2rVmtkZB/O3Vh50X6fOvs/hniMNuTARkEDZXao4Vw+fOgQGKBPmVszBpoPE?= =?us-ascii?q?l77+3fDUg+tvdAc5aNmtjdn9F73vQZePdtMC09vNkTl5l96YmV1seFbxXRzp?= =?us-ascii?q?f0JdHIrfmUGfrfz14lemtCSLoWfRv155kmPt4+Q7DTH6FWvRcbBachW5EhKm?= =?us-ascii?q?Hx9L10LAN0bw7Ra7S0gtXwquKNeJRUu2fc7kgsIyfEpx0D1vu0QBRgb5Ckgn?= =?us-ascii?q?X9PJE9SzFaot1zFBRmBopPGsIHrwqhGZKUnr+0i8Pis3997ssxlOKkDvHMyc?= =?us-ascii?q?T8xIh6QoJb+V3OOTHdGa1mqlpqg/70gfra1JT1T8T4doVAHMxYZkuNPrvHGJ?= =?us-ascii?q?ivbzGDIMTxf2ZY/LOGlrF0SBOcYGb+RaXQ8GWcPehgqWA8zZZ1NL7LxSEpx6?= =?us-ascii?q?nSxd+3YmZcvCrlpnmMYt8X10DHHezTWVpvTPOB9Gt0VfkMYZDc6PYFMdtkxs?= =?us-ascii?q?OVpQZ08mIGmPCoa4ygqFLckhZgeJbaKlb58zooUokNZhKkOA0jhnGP7jyXOl?= =?us-ascii?q?F1BevhJch2i8uOFTTp5lJtgid1PyhGAGWiDYOqHEEw+IeyZRaB6RlQJ9IChP?= =?us-ascii?q?KsPxZh8KqoRr8scrdCmePilrIHmNByJieHEMpdPyeWLrh2NzxKA+Pnr1EuZR?= =?us-ascii?q?gFuLExHIwyYM7KaGAKPVzI4iT1zkOW0kD5bNer06WhKyYM9XBG0reD1iJD8U?= =?us-ascii?q?3xhfuFmdDkGJDQap3/FKrKPSwqSzCcADc/C0Ck/X+l/v4DovfeOm4cv0odJC?= =?us-ascii?q?SfTgwL8OQnj9HVA3SbvOp5ZpwRzKSYXifqUixjvKw7AytK80eWTKxQOxPRai?= =?us-ascii?q?rKiXFRqUSZLf9F4HzhYqfQkqFcQOEHKpBHcvSETd/VY7VVLnEjkTBPa7X0RM?= =?us-ascii?q?HVs7tsigGAdmAeCaSdsQzGFhTES+GAxz/tQYQetpQ1vSxt4N/LgytrCPuZba?= =?us-ascii?q?uUoDr3o5ax1XvetODbTWZrZkU0hKQHAW3SpXsIJGIFDoQNsVr2Cu6bZklK3W?= =?us-ascii?q?40k+8mxRIWeQpyX3Evmn1blfqwAItYHHYFhWOpR7sNa1V6?= X-IPAS-Result: =?us-ascii?q?A2DNCQDMqvVa/wHyM5BcGwEBAQEDAQEBCQEBAYNAA4FcK?= =?us-ascii?q?INyiGKMEYFYIYEPgUCTZioTAYUHgkMhOBQBAgEBAQEBAQIBaxwMgjUkgk8BA?= =?us-ascii?q?wMBAiAEGQEBOAIDCQEBGwMBAgMCIgQCAgMBQQoIBgEMBgIBAQGDHoFpAxUDo?= =?us-ascii?q?UeKGG2BaTOCbwEBBYECAQFegjQDgTWCQAgXcoR4giSCE4EPIwyCLoghgjQgj?= =?us-ascii?q?HuLOAmOS2SHE4R4izWGSjMhgVJNIxWCfoIUDBeDRYocAVVPegEBkBUBAQ?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 11 May 2018 14:40:31 +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 w4BEeTW3003353; Fri, 11 May 2018 10:40:29 -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 w4B0qxII007111 for ; Thu, 10 May 2018 20:52:59 -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 w4B0r060001521 for ; Thu, 10 May 2018 20:53:06 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1AQBACA6PRalywYGNZcHQIFDINBgV8og?= =?us-ascii?q?3GIYIwQgVghgQ+BQJNrhHcCRYI7ITgUAQIBAQEBAQECFAEBAQEBBhgGS4U0AQM?= =?us-ascii?q?DIwQZAQE4DxwDAQIDAiYCAkUKCAYBDAYCAQGDH4FpAxUDoGiKGG2BaTOCbwEBB?= =?us-ascii?q?YECAQFegjoDgTWCQAgXcoR4giSCE4EPIwyCLoghgjQgjHmLNgmOSWSHEoR1giu?= =?us-ascii?q?JB4ZJM4FzTSMVgn6CIA4Jg0WKHAFVT5A7AQE?= X-IPAS-Result: =?us-ascii?q?A1AQBACA6PRalywYGNZcHQIFDINBgV8og3GIYIwQgVghgQ+?= =?us-ascii?q?BQJNrhHcCRYI7ITgUAQIBAQEBAQECFAEBAQEBBhgGS4U0AQMDIwQZAQE4DxwDA?= =?us-ascii?q?QIDAiYCAkUKCAYBDAYCAQGDH4FpAxUDoGiKGG2BaTOCbwEBBYECAQFegjoDgTW?= =?us-ascii?q?CQAgXcoR4giSCE4EPIwyCLoghgjQgjHmLNgmOSWSHEoR1giuJB4ZJM4FzTSMVg?= =?us-ascii?q?n6CIA4Jg0WKHAFVT5A7AQE?= X-IronPort-AV: E=Sophos;i="5.49,387,1520913600"; d="scan'208";a="274382" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.35]) by goalie.tycho.ncsc.mil with ESMTP; 10 May 2018 20:53:05 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3AC2BRFBF0ppA8Ex3+weuJop1GYnF86YWxBRYc79?= =?us-ascii?q?8ds5kLTJ76pc2+bnLW6fgltlLVR4KTs6sC17KN9fi4EUU7or+5+EgYd5JNUx?= =?us-ascii?q?JXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQ?= =?us-ascii?q?viPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCazbL9oMBm6sRjau9ULj4dlNqs/0A?= =?us-ascii?q?bCrGFSe+RRy2NoJFaTkAj568yt4pNt8Dletuw4+cJYXqr0Y6o3TbpDDDQ7KG?= =?us-ascii?q?81/9HktQPCTQSU+HQRVHgdnwdSDAjE6BH6WYrxsjf/u+Fg1iSWIdH6QLYpUj?= =?us-ascii?q?m58axlVAHnhzsGNz4h8WHYlMpwjL5AoBm8oxBz2pPYbJ2JOPZ7eK7SetEVSn?= =?us-ascii?q?BBXsZWUCxNG5qwYpcBAucAIOpUtpXxq0YTphe6GwWgGObjxzlVjXH0wKI6yf?= =?us-ascii?q?wsHxzY0gwuH9wAs3rao9v6O6gQTe+7w7LFzSnBYv5MxTvx9IbFfxInrPqRXb?= =?us-ascii?q?xwa83RyUw3Gg7blFqQspLqPjOI3eoQr2eb7/BvVf+hi24jtQ5xuCWky8AwhY?= =?us-ascii?q?bTnYIa1FDF+D5iwIkpJd23UlN7YdCgEJROrSGWLpd5Tdk4T250vyY6z6QLtJ?= =?us-ascii?q?imdyYJ0JQq3wDTZ+GIfoSS/B7uW/ydLSl3iX5/d7+yiA6+/Emix+HmS8W50V?= =?us-ascii?q?JHojBEn9TMrHwByQLf58eBR/Bg5EmuwyyP2BrW6uxcIUA7i67bK5k5z7E+iJ?= =?us-ascii?q?cdqELNEyHolUvskKKaakQp9vK25Ov5Z7XmvZCcO5Vxig7kM6QuntazAeE5Mg?= =?us-ascii?q?gKR2Sb+OK826P//UDhXrlGk/I7nrPHvJ3VP8gXuKG0DxVa34ss8xq/Ci2p0N?= =?us-ascii?q?UcnXkJNlJFfxeHgpD1NF7UO/D3E/e+jk+3kDh3x/DJJKDhApvJLnfdirftZK?= =?us-ascii?q?py5FRGxAUvytBf4opYCqsdL/LrRk/xqNvYAwciMwOqx+bnCdN91p4RWG+UHq?= =?us-ascii?q?+YML/dsV+P5u41JemMf5UatCzyK/gi+f69xUM+zHsmWOH92ZoRdWD9BfltPl?= =?us-ascii?q?+YfWuph9ANDGMHlhQxQfasi1CYVzNXIXGoUPR4rhUYLKfuWYPCQJ29xb+Mxi?= =?us-ascii?q?G2GrVIaW1cTFOBC3Hlc8ODQfhaLGqqK9Jl2hkDUqKsA9s53AyqnBfz1r4iK+?= =?us-ascii?q?3T4CBevpXmgpw93PHejRE/83RPCs2Z12ycBzVvknggWy493Kc5p1d0jFiEz/?= =?us-ascii?q?48y8d1XfhS4e5ZGlMhOJrdyfFqI8zjUQLGONGSQRCpRcvwRXl7dfcY6PxLb0?= =?us-ascii?q?dmEMi5lTjH3jG2GPlNzvqMHpN+uvbn+lHaBINxym3NybI6p10nWddUczX/wK?= =?us-ascii?q?ll+F6XT6zOk0PRtaGqfKIH0SiFoGWEzWzIvkZYWQhrXKPtVnkZYU3Xpt39oE?= =?us-ascii?q?jFSunqQZcqPxAJ4smFKeMeadDkll5BQ/TLM9TEZGewhmL2AgyHkPfEUIf2YH?= =?us-ascii?q?galAXUDkQN21QL8HCJKAk4QySsuWTTCBRvUFbofU6q6uB9tWmyCEk5iQOSOQ?= =?us-ascii?q?kp9bOw9wVdoPuGUfIIluYGvSA7sTRvNFC02t/XTd2aqFwyUr9bZIYW6UxKxC?= =?us-ascii?q?rivAx0I5KkIroq0lUXaAlml1jl1xxqBIFNi40hpTUhyw8kevHQ609Iaz7Nhc?= =?us-ascii?q?O4AbbQMGSnuUD3MfSE00zC0NuQ5qYE4eg5rFOmpgyyC04+6Co4gcRe1H/Ft4?= =?us-ascii?q?3DVVdUXJ/0SUlx8hF7o/ffYy1ur4/X1Hg5KaCvqXeCwNMmAuI51wytN8lSKq?= =?us-ascii?q?KKFQL+UoUaCsGiJfZsmg2BfxsEO+cU/6kxMg=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DBAwC66PRalywYGNZcHQEBBQELAYN?= =?us-ascii?q?AgV8og3GIYIwQgVghgQ+BQJNrhHcCRYI7ITgUAQIBAQEBAQECARMBAQEBAQY?= =?us-ascii?q?YBksMgjUkgk8BAwMjBBkBATgPHAMBAgMCJgICRQoIBgEMBgIBAYMfgWkDFQO?= =?us-ascii?q?gaIoYbYFpM4JvAQEFgQIBAV6COgOBNYJACBdyhHiCJIITgQ8jDIIuiCGCNCC?= =?us-ascii?q?MeYs2CY5JZIcShHWCK4kHhkkzgXNNIxWCfoIUDA4Jg0WKHAFVT5A7AQE?= X-IPAS-Result: =?us-ascii?q?A0DBAwC66PRalywYGNZcHQEBBQELAYNAgV8og3GIYIwQg?= =?us-ascii?q?VghgQ+BQJNrhHcCRYI7ITgUAQIBAQEBAQECARMBAQEBAQYYBksMgjUkgk8BA?= =?us-ascii?q?wMjBBkBATgPHAMBAgMCJgICRQoIBgEMBgIBAYMfgWkDFQOgaIoYbYFpM4JvA?= =?us-ascii?q?QEFgQIBAV6COgOBNYJACBdyhHiCJIITgQ8jDIIuiCGCNCCMeYs2CY5JZIcSh?= =?us-ascii?q?HWCK4kHhkkzgXNNIxWCfoIUDA4Jg0WKHAFVT5A7AQE?= X-IronPort-AV: E=Sophos;i="5.49,387,1520899200"; d="scan'208";a="13170963" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from ucol3cpa06.eemsg.mail.mil ([214.24.24.44]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 11 May 2018 00:53:05 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;744c88c4-c599-4e86-bea2-4cbbbc8d3117 Authentication-Results: ucol19pa15.eemsg.mail.mil; dkim=pass (signature verified) header.i=@yahoo.com X-EEMSG-check-008: 564562269|UCOL19PA15_EEMSG_MP13.csd.disa.mil X-EEMSG-SBRS: 3.5 X-EEMSG-ORIG-IP: 66.163.189.90 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0CmAgCV5vRah1q9o0JcHQIFDIUgKINxiGCNaCGBD4FAk2uEdwJFgjshOBQBAgEBAQEBAQIUAQEBCgsJCCgjDIUoAQMDIwQZAQE4DxwDAQIDAiYCAkUKCAYBDAYCAQGDH4FpAxWgaooYbYFpM4JvAQEFgQIBAV6COgOBNYJACBdyhHiEN4EPIwyCLoghgjQgjHmLNgmOSWSHEoR1izKGSTOBc00jFYJ+giAOCYNFihwBVR8wkDsBAQ X-IPAS-Result: A0CmAgCV5vRah1q9o0JcHQIFDIUgKINxiGCNaCGBD4FAk2uEdwJFgjshOBQBAgEBAQEBAQIUAQEBCgsJCCgjDIUoAQMDIwQZAQE4DxwDAQIDAiYCAkUKCAYBDAYCAQGDH4FpAxWgaooYbYFpM4JvAQEFgQIBAV6COgOBNYJACBdyhHiEN4EPIwyCLoghgjQgjHmLNgmOSWSHEoR1izKGSTOBc00jFYJ+giAOCYNFihwBVR8wkDsBAQ Received: from sonic306-28.consmr.mail.ne1.yahoo.com ([66.163.189.90]) by ucol19pa15.eemsg.mail.mil with ESMTP; 11 May 2018 00:53:03 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1525999983; bh=fuWPBsPpeE7lOMZPTp2ysQ2DzHZcFiIavdIVU5rBTvE=; h=Subject:To:References:From:Date:In-Reply-To:From:Subject; b=MMSVqcNzjY6mo5SBBQT7Jguq/I7Jl9j8Bakrfi4uVLLNSTcNIEvcQdNtZlLHT4WgoINGc5PYKapqybTNWbDNwmtpCwc3jwmEPRTkmTg9ntCU9SSA2b7vSYFONxNjnTvbdLH7pZRXXLf8lx4Df5O5DAe86YTStt7WCuo58DMgBBJt5O+euI/3N09Srtpyzf96l8mpvl8jnpAQ8qNS6wURUYWiLKU2AtoF55CiHGGOkY+QC5knpeE7+SeXfixWe/M290ob/NhVoaQ9YQgJvG070KnKaAuY8BbBQiv2rEVP1imSdrdGTPdV+X2i4mlYdjY9mrnbeDW/GmgBfGR4CGhA4A== X-YMail-OSG: 0njNphcVM1lWG4dtNH3flvo6XH3mn36RBxbtniOMtMpkyeWYcWBUItWfaXRj.vY __X1097RPnY45G5v2xR1N9rA.uDMRo_OoSUTd7sdRRvDyQFdpIl7pbRwrAErDoCD3toaHfjPDDPu TddBbAjTrQFY6EVk4YePZFTDyBQD.e6x5SRhpia4_OSr_5oxfBXUZkn9zsyhPkYS2xzsqdYbRozU POPagD.IDN3GOOPxyxP.fXAqlT3IMFu2BcIxL4cpViY4FuUvngkqWNkXTHsJT2i8.MJu1uG0dKs7 8CSJ5SvPHF4i_WFx5VnewUXmv4ys56RmIawhcnXtlYLV.TZu83l2Gsm8DLJfxolKaI6WvtH0.SUq 3jmNLsgv4or.aLOnkSHJQbWs03_A.3GlviryAb.MZ.2ofF9dWDFV0ihXzeHgPhE9lDxKLQgc.PRX qisIUbnlbZx.A9VRraAFIVUZN0tMWLp55CKb2P5gNsbjXqOr8a4IRQuxJXahHh5l1NiVagEjh.RL I0C62ufCjpV1czDFW0D0D2xlfz0l5BaQAbwfEqBtLpLNTdCW_TsWd8pgE7X9Gq2cLqTKmpjZYFgq 0hV6JAVPfPd0.Dxn.2LXJqDQeO.s0Ip5za6LPORpJ5fUwSpBshzImtTsXFern1sexnaJyk9u7FpI 6fmU- Received: from sonic.gate.mail.ne1.yahoo.com by sonic306.consmr.mail.ne1.yahoo.com with HTTP; Fri, 11 May 2018 00:53:03 +0000 Received: from c-67-169-65-224.hsd1.ca.comcast.net (EHLO [192.168.0.105]) ([67.169.65.224]) by smtp426.mail.ne1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID c7b1bbb00d68476f626be55ee178449a; Fri, 11 May 2018 00:53:00 +0000 (UTC) To: LSM , LKLM , Paul Moore , Stephen Smalley , SE Linux , "SMACK-discuss@lists.01.org" , John Johansen , Kees Cook , Tetsuo Handa , James Morris References: <7e8702ce-2598-e0a3-31a2-bc29157fb73d@schaufler-ca.com> X-EEMSG-check-009: 444-444 From: Casey Schaufler Message-ID: <552c12d4-8254-5805-4586-34aaa5c1f389@schaufler-ca.com> Date: Thu, 10 May 2018 17:52:57 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <7e8702ce-2598-e0a3-31a2-bc29157fb73d@schaufler-ca.com> Content-Language: en-US X-Mailman-Approved-At: Fri, 11 May 2018 10:37:08 -0400 Subject: [PATCH 05/23] SELinux: Abstract use of file security blob X-BeenThere: selinux@tycho.nsa.gov X-Mailman-Version: 2.1.21 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 From: Casey Schaufler Date: Thu, 10 May 2018 14:01:52 -0700 Subject: [PATCH 05/23] SELinux: Abstract use of file security blob Don't use the file->f_security pointer directly. Provide a helper function that provides the security blob pointer. Signed-off-by: Casey Schaufler --- security/selinux/hooks.c | 18 +++++++++--------- security/selinux/include/objsec.h | 5 +++++ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index f4179eb572e8..1d0a4a9fa08b 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -398,7 +398,7 @@ static int file_alloc_security(struct file *file) static void file_free_security(struct file *file) { - struct file_security_struct *fsec = file->f_security; + struct file_security_struct *fsec = selinux_file(file); file->f_security = NULL; kmem_cache_free(file_security_cache, fsec); } @@ -1869,7 +1869,7 @@ static int file_has_perm(const struct cred *cred, struct file *file, u32 av) { - struct file_security_struct *fsec = file->f_security; + struct file_security_struct *fsec = selinux_file(file); struct inode *inode = file_inode(file); struct common_audit_data ad; u32 sid = cred_sid(cred); @@ -2213,7 +2213,7 @@ static int selinux_binder_transfer_file(struct task_struct *from, struct file *file) { u32 sid = task_sid(to); - struct file_security_struct *fsec = file->f_security; + struct file_security_struct *fsec = selinux_file(file); struct dentry *dentry = file->f_path.dentry; struct inode_security_struct *isec; struct common_audit_data ad; @@ -3524,7 +3524,7 @@ static int selinux_revalidate_file_permission(struct file *file, int mask) static int selinux_file_permission(struct file *file, int mask) { struct inode *inode = file_inode(file); - struct file_security_struct *fsec = file->f_security; + struct file_security_struct *fsec = selinux_file(file); struct inode_security_struct *isec; u32 sid = current_sid(); @@ -3559,7 +3559,7 @@ static int ioctl_has_perm(const struct cred *cred, struct file *file, u32 requested, u16 cmd) { struct common_audit_data ad; - struct file_security_struct *fsec = file->f_security; + struct file_security_struct *fsec = selinux_file(file); struct inode *inode = file_inode(file); struct inode_security_struct *isec; struct lsm_ioctlop_audit ioctl; @@ -3811,7 +3811,7 @@ static void selinux_file_set_fowner(struct file *file) { struct file_security_struct *fsec; - fsec = file->f_security; + fsec = selinux_file(file); fsec->fown_sid = current_sid(); } @@ -3826,7 +3826,7 @@ static int selinux_file_send_sigiotask(struct task_struct *tsk, /* struct fown_struct is never outside the context of a struct file */ file = container_of(fown, struct file, f_owner); - fsec = file->f_security; + fsec = selinux_file(file); if (!signum) perm = signal_to_av(SIGIO); /* as per send_sigio_to_task */ @@ -3850,7 +3850,7 @@ static int selinux_file_open(struct file *file, const struct cred *cred) struct file_security_struct *fsec; struct inode_security_struct *isec; - fsec = file->f_security; + fsec = selinux_file(file); isec = inode_security(file_inode(file)); /* * Save inode label and policy sequence number @@ -3990,7 +3990,7 @@ static int selinux_kernel_module_from_file(struct file *file) ad.type = LSM_AUDIT_DATA_FILE; ad.u.file = file; - fsec = file->f_security; + fsec = selinux_file(file); if (sid != fsec->sid) { rc = avc_has_perm(&selinux_state, sid, fsec->sid, SECCLASS_FD, FD__USE, &ad); diff --git a/security/selinux/include/objsec.h b/security/selinux/include/objsec.h index db1c7000ada3..2586fbc7e38c 100644 --- a/security/selinux/include/objsec.h +++ b/security/selinux/include/objsec.h @@ -167,4 +167,9 @@ static inline struct task_security_struct *selinux_cred(const struct cred *cred) return cred->security; } +static inline struct file_security_struct *selinux_file(const struct file *file) +{ + return file->f_security; +} + #endif /* _SELINUX_OBJSEC_H_ */