From patchwork Thu Jan 12 22:40:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Roberts, William C" X-Patchwork-Id: 9515589 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 3CB4D601E5 for ; Fri, 13 Jan 2017 13:03:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 271CC2863F for ; Fri, 13 Jan 2017 13:03:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1B8522864B; Fri, 13 Jan 2017 13:03:23 +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=unavailable 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 395332863F for ; Fri, 13 Jan 2017 13:03:21 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.33,221,1477958400"; d="scan'208";a="2268898" IronPort-PHdr: =?us-ascii?q?9a23=3AAVEqIBBjuCOdh+1C6P+4UyQJP3N1i/DPJgcQr6Af?= =?us-ascii?q?oPdwSPr/oc2wAkXT6L1XgUPTWs2DsrQf2raQ6PqrBTdIyK3CmUhKSIZLWR4BhJ?= =?us-ascii?q?detC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBxrwKxd+?= =?us-ascii?q?KPjrFY7OlcS30P2594HObwlSijewZbx/IA+4oAnPucUbjoVvIbstxxXUpXdFZ/?= =?us-ascii?q?5Yzn5yK1KJmBb86Maw/Jp9/ClVpvks6c1OX7jkcqohVbBXAygoPG4z5M3wqBnM?= =?us-ascii?q?VhCP6WcGUmUXiRVHHQ7I5wznU5jrsyv6su192DSGPcDzULs5Vyiu47ttRRT1ky?= =?us-ascii?q?oMKSI3/3/LhcxxlKJboQyupxpjw47PfYqZMONycr7Bcd8GQGZMWMheVzZFAoih?= =?us-ascii?q?cYUBCeQPNvtco4XkulcCsR6yCA+xD+3t1zBInGf7060k3eo8Hw/I3wsuH8oMvX?= =?us-ascii?q?jJotj6O7sdX++rw6nT1jjDc/Fb1C3h5IXSbhwtv/eBVq9wf8rLzkkvEhvIj1uR?= =?us-ascii?q?qYzhOzOV1/4Cs22B4+V8T+6vkWknpBpvrTi12scskZLEhoMTylDY6yp5xJw5Ks?= =?us-ascii?q?G/SE5+Z9OvDZVetyafN4RsQ8MiRXlluCc8yr0ap5G7eDIGx4ggxx7abfGMbouG?= =?us-ascii?q?4gr7WeqMLjp1i2hpdbKiixqo70StxfPwWtOp3FpSsyZIltrBumoQ2xHR6sWLUP?= =?us-ascii?q?9w80O71TuM0Q3Y9/tKLloulaXBLp4s2rswlp0OvkvdBiL2g0D2jLOOdkUj5+io?= =?us-ascii?q?9/zrYrX4qZ+YMI95kh3+Pb40msy+HOQ4KRICX3Sb+Oug1L3j+lf1QLNWgf0tjq?= =?us-ascii?q?bVqpXaJcUfpqKhAg9V1Jgs6wqnAju739kVkmMLIVJYdB6dkYTkNE/CLOrlAfun?= =?us-ascii?q?hlSjijZrx/TIPr37BZXNK2DOkKz/crZ56k5czhczzN9G651PDbEBPfTzVVPvu9?= =?us-ascii?q?zDFRI5Lwy1zPrnCNV6zI8eX3mPDbWDPKPdtl+I+PojI/OQa48NpDb9N/8l6ubs?= =?us-ascii?q?jX8+n18SZ7Wp3ZsNZ3C+BflmIUKZYXzpgtgbCmcKohQxTPbxiFGYVj5TfXmyVb?= =?us-ascii?q?om5j4nEIKmEZvDRoe1jbyD3ie0BIFZZmNdClCLF3fodpuEVuwCaCKWP89gnScL?= =?us-ascii?q?VaWnS489yBGirgj6y6BoLuDM4C0XqYrj1MRp5+3UjRwy7SJ7AN+D3GGLTmF0gm?= =?us-ascii?q?QISiQ33K9hv0Ny1E2P0a9ig/xXDdZT/e9GUh8mNZ7AyOx3E839WgXHftePVVmp?= =?us-ascii?q?XNGmATAqQ90r3dAOeUF9F8+ljhDZ0CqgG6UVmKCTBJwo7qLc2GD8KNthy3nczq?= =?us-ascii?q?kslEUpQsxKNWK6nKF/7BTTC5TPk0qHi6agbb4c0zLV9Gef0WqOu1lVUA92UaXZ?= =?us-ascii?q?Q38fYlXZrdHn6UPeVb+vCa8qMgxZycGcLKtKb8fmjVRCRPj4P9TfbHi9m2CqBR?= =?us-ascii?q?aH3rmMdpble30B3CXBD0gJiwAS/HeBNQg4HSqhpmbeACVvFVLpeU/s9/NxqGm4?= =?us-ascii?q?Tk810QGFcVdt17yr9R4JnfacUe8c3qoYuCc9rDV5BEiy38rMBNqapgphZ75RYc?= =?us-ascii?q?sn71dd1GLZrBR9Ppi6IK9+mFESaQN3v1nh1x9vEIVPjdAqrG82zAp1Ma+Z3lJB?= =?us-ascii?q?dzed3Z/uIL3aMWfy8w6yZK7RwFHRys6W+r0I6PQ6tVrsoB2pGlAl83V93Nlfy2?= =?us-ascii?q?Gc6YnSDAoOTZLxVV469xZgp77AZCky+4LU1WZ3PKmxqj/C2sslBPAryxa7Zdtf?= =?us-ascii?q?N7mEFADqGc0AG8euMPAqm0Subh8cP+Bd7q00P8S7d/ad266kJuVgnDW7jWhd54?= =?us-ascii?q?B9yE2M/TJmSuHUx5YF3+2Y3gyfWjjmkVihqMH3lp5eZTwJBGWw1S3kCJRWZq1o?= =?us-ascii?q?coYBEX2uLNGvxtVim57tXGZV+0K5CFMCxsCpYgaSblz63QBLzkQYvX2nljW+zz?= =?us-ascii?q?xokjEmtLCT3CrQzOT+bBAHIHJERHF+jVfwJoi5l9AaU1asbwgtkxuo/kL6x7VH?= =?us-ascii?q?pKR4KmncW11Efy/sL2FtSqGwrKaNY9ZT6JM0tiVaSP+8YV6ASr76uBsazzjuH3?= =?us-ascii?q?BYxDA8eTCqv4/2nxpghGKbMnlzsGLTedtsyhfH+NzcWflR0yIIRSZijTnXGkaz?= =?us-ascii?q?P8Oy/diPiZfMrPq+WHm8Vp1WayXrypmAtCSj721wHRK/h+yzmsHgEQUizS/0ys?= =?us-ascii?q?RlVSTSoxb4eYTky6O6Med7cUZyH1/899B2GodgnYssnJsQw2QVho2J/Xoblmf+?= =?us-ascii?q?KdNb2aP6bHoJWzEL2MXY7xL71015KXKF3YX5Vm+SwsF5fdm1fnsW2j4h78BNEK?= =?us-ascii?q?qU8r1Ekjdpolq/twLde+Rynjcayfso534XmOUJuAsrziqHGLASGlNUPSv2lxSH?= =?us-ascii?q?99q+trlYZH6zcbis00pzhdShDLCZogFAQXr5YYktHStx7sV5LVLN32b+6pr8eN?= =?us-ascii?q?nRa9ITtwGbkwzag+hTNp0xiuIAhTB7NmLloX0l1+k7gAR03ZG9uIiHL3ti/Lil?= =?us-ascii?q?DR5fODz4fNgT+izxgqZFhMqW2JqvHpp5EDURQJToVe6oEC4Vtfn/LwaBCiA8qn?= =?us-ascii?q?OBFbXFBwOQ80Bmr3bTE5CsMXGaP3wZwclkRBmaOENTmgYUUysmnpQhDACl2NTh?= =?us-ascii?q?cFtl5jAW/lP4qQVDyuRzNxTkUWfQugGoaiwySJeBMBpa9AZC513aMcaG9OJ8Az?= =?us-ascii?q?lY/oG9rAyKMmGbfx5HDXwNWkOaH1DsJL+u5cXe/OiCHee+MuDObquUqexFTfuI?= =?us-ascii?q?3pWv0pZ8/zmQKMqPMH5iD+c02kVdR3x5HdrWmykXQSwNiy3Nd9KbpAu7+iBvsM?= =?us-ascii?q?C/9unkVRnx5YuJFrRSMc9j+xaojqefL+SQnjp2KS5E1pMQwn/F0KAf00QPiyFq?= =?us-ascii?q?bDSiDbUAtTLNTa7JlK9YFRgbZzl0NMtS4KI2xhNNNtLDitPpyr54ieY4C1RFVF?= =?us-ascii?q?zlhM6kfskKI2azNFPJGkmLKKiGJT3Mw8Hyf6ywU7tQg/tItxeoozaUD1fjPiif?= =?us-ascii?q?lznuTx2vP/tDjCeHPBxZvYGwaRhtBnb+Q9LhcB20Ksd3jScxwb02mHzFKXIcPS?= =?us-ascii?q?J7c0NXob2a9TlYjelnG2xd8nplKvGJlDuf7+bCMZsZrP1rDT5um+Jd+nQ6xKNf?= =?us-ascii?q?7DtYS/xthCvSstlurkm8kuWVxDtrSh9OpSxPhIKMvURvIr/W+YVFWXre+xIN92?= =?us-ascii?q?qQAQwQp9R5Et3vp7xQyt/XmaL1MjdN6crU/dMHCsjaKcKHKmEhMQbnGD7VCgsK?= =?us-ascii?q?VzirOn3eh0NHlPGe7HqVroI1qpL0gpoBVqdbVEApFvMdEklqAccCL4ltUTMri7?= =?us-ascii?q?6UltAI6GGlrBbLR8Vao4rHWeiIDfXrNTaZi6NLZwERzbPkKoQTNY3620t4Zll8?= =?us-ascii?q?govKB1LaXcpRrS15cg80vEJN/WBlQW0y1ELlbQWt7WQOGvGqhRE2ixFxYeI3+D?= =?us-ascii?q?fr+Vc3KULApDEsn0kphdXlnTeRfSbrI6e/R45WFTT7ulM2MpPjXQl1awiyklZl?= =?us-ascii?q?NDfAXL1RiLRheXpsiA/GtptFAeRcQrFcYB8M2fGXYO0l0UhbqiWi30NH/+zFCJ?= =?us-ascii?q?p8mwssapGstXVA1BxgbNMuOaPQI69JwURKiaKVoi+kzOYxzxECJ0wV6mOdZDYI?= =?us-ascii?q?uFAUNrkhPyeo+PJj5haGmzZYe2gMUOEqou5w+UM7IOSAzCPg36RFKk+vK+yVN7?= =?us-ascii?q?mZtHTYlc6UXlMw0VsFl1Nb8rhtz8gsaVCUWFwvzLaKDBsJNNDCJhxSb8pc7HjT?= =?us-ascii?q?ZziBsOXXzZJzIYq9CvjiTfWSu6YMnkKkAAEpEpwR4csbAJms0VzXLdz8IbEf0x?= =?us-ascii?q?Ut/gPrJVueDPtXZB2LjS0Ho8CjzJ53x4VdIC8SAXllOyWt+rnXvhMqgOaEXNou?= =?us-ascii?q?bHcaRJULOW8tWMKgnS5Zo3NADCKs3+0D1AeC6iXwpiPKDDnzd9BjfuubZQtwCN?= =?us-ascii?q?Gq/jUy66y2iVnN8prAIWH7NNNit8TA6eMcupaLEfRUTaNys03EgYlXW2SqU3LT?= =?us-ascii?q?Ed6yP5XwcJcjbdj1Cna8T1y+hCk4QNv2PNaoMqeHmxroRZpOvImdwj8jKde3Fi?= =?us-ascii?q?sCFBdou+ED+KV8aBUebJUnZB7osAI+N7CiLAqDzNWhXXytKTpXTvlYy+W2fbpX?= =?us-ascii?q?wDQwbuWi0nsvUok6z/Wr8U4KXJwKjQvexPa5aIlYTSjzGmdQewrIpSohi2dtLO?= =?us-ascii?q?AyzfkjwBnQq1kTLyiLdPB1aGxDp9w8GVKSIXBxCmokR1+djZHO7ROt37ES5SRS?= =?us-ascii?q?hMxY0etbv3jippXfei6jWLS3qZXJtCotddcmo7drPozlPsuLr5LenjvRTZnWrg?= =?us-ascii?q?2FUDC1F/tcmthMPi1YWuNEmWc7NswaoYBB81Y+Vt8iJ7xTD6khvqqlaT5lDSEO?= =?us-ascii?q?0yAWT4aA3TwEgue73bvVjAydf48jMBMetpVOm9UdUzNsbiMYuqCjS53cl3WYRW?= =?us-ascii?q?gTPAcT8QNM6RobmYBueODo+5DHQ4JSyzFIufJ0STHEFoNo9lfhTWGWm1f4Qu27?= =?us-ascii?q?k+O1xQJS0O7s0t4DVR5lD0hdxvpZlksvKLFzMKkeppfEvCKSe07mu2zg0/epJF?= =?us-ascii?q?5UycLIbVL4F5bFuXD6UiIC5X0eXZVPx23HFZQOjwp5b74mq0lOII+8Zknz/CAr?= =?us-ascii?q?x4NtH7m8VMCk2UwlrWoYSCi2E9pNEeZmsEjYWDd9eZCktI3lO4lOQm9X4JCdsU?= =?us-ascii?q?1WkF9qMyGi0pdcN9tN7SQSXDdRpTWdvd2ySMJH2c93AJ8MIst/u3nnF6NePZid?= =?us-ascii?q?uXs2taLzynXB4TAzrE+6xCmvG6+/V+9Y8XcSFRkpJ2Sfr0kvDvEj8mTJ/1DMrF?= =?us-ascii?q?974flUCqKIjUVrrzZ3BopOCSpR1XC5M1RzS2FLs/1dKKTRacNcWfczZRirOxww?= =?us-ascii?q?DvMm2kuJ/UZvnXjnfyNyrAxa+zvGXwk1UykVja3hmToEqsGoITUaUY5HbS09by?= =?us-ascii?q?fZLAKWgTpYvAxCa0FsQZwZAc1I+7Aa3YtV4srNUlygKScbUxx+Lgg4y+ZQlVZf?= =?us-ascii?q?sEWEfiDQFRaodfHKshBsYcedsMupI+/j8AdBlIznrPgy978fSH2+hQ2tXdfeop?= =?us-ascii?q?f8ttKQrEuBbqP4PPCnbHDcUjfMlQiwiqkgD5bU5SjfKg1bK4N1yXA8e5juFXbL?= =?us-ascii?q?PQhaJ6IcP0dbV6d6Zstdr+9HecBkY7gG+bVxBh2ZWxzjAoqvo+daLlzLXzTRMz?= =?us-ascii?q?2B8vCjoYLU9bHSUubgadCQy3vFXq56MIx35iX8G7fvzYBR4FH22ut3+kN8V1fG?= =?us-ascii?q?LziLrM79KQMT+Mmiakzis4UzHTzIHZhwkGDixl1besoTRC2q7ooXxI1F53b3VO?= =?us-ascii?q?13zFL/sOtM+Ll48YM3+axmyd+oJafOLvRXqVdnAgOIBgpw65otHHNyR3tWYu8M?= =?us-ascii?q?MvfeYboWjcbyq+DtDaMX7AeZ++tDadvIP0vBgNWwCimASRxYmwcMsSIaLhGC2P?= =?us-ascii?q?GbhqB5Utulpezl2kI3+Ve+MB8GzLdp5Yia5qqEvujXbwHezbIcQKjlWtvzrqgw?= =?us-ascii?q?u0OV/fAkkaQBemhxYwK5DOgdStQSyX37wKAs0y0sD9jDEK769/5bSX01hDTglI?= =?us-ascii?q?5hH18OAPMbAaKL/ZhCnmc/g+HZNMcZcrpFmmaUER6rCKECxGWu6yuKJGllnhDO?= =?us-ascii?q?3A3xQWyp6l/2tjV0QSzWz9fsikBVTKW4BV9OXyq1Pk91qDGPMxDutNr5o6Q161?= =?us-ascii?q?w5PXL/udKRjmShPqhXH8rlKNyaPyY0uEodjIctSdy3xYAbBd29Lc8e8HFjb/ve?= =?us-ascii?q?72ernDFEo6pcmoXR/Nqa+vTNEnmmlaGarK+NxD9AwHgioV4/8sygNu3J59CSRf?= =?us-ascii?q?So030cTyZ5uwvERRK1q7rbr14OOUORy0fLhJYKPsxF0nkky0Hm/vYsTMg09AVE?= =?us-ascii?q?GYbKf+kCqizrODvo3VafZMo6ViyZ0ztRAlL1Hkd3FbM52GLxps3Jk2nf+0EmR4?= =?us-ascii?q?l3bUznhgd3A58+KU0z9Fgd2jADHhQVaRCHELGoAlzoLZEZWkcechmH0726e6gt?= =?us-ascii?q?0U113Lyv+PfZbfZgCKoVKvZdkgmOkUBfGpINtK0TQKlxe1FD+6HKoQjiEZLoX+?= =?us-ascii?q?D8lXo3N/26XNxV8dwDu3sl+Aa/SAKq6Y1f4LYDlJCIaqlEbIDXvM9m8Udo/zEP?= =?us-ascii?q?eTJWgBVklBO2S/4cq/rs4tfFq5qk8OCuW7gxR+8P7Rg7G3x+j4fsgFAkudzX1e?= =?us-ascii?q?ZcSojOhIT67g9MI2CFuJzb0xl6JuoCMYSrc6h8938fPSgRO2oOPcaKa/k7+yJt?= =?us-ascii?q?MTTS6EZYDcwQft4YJ9TCmRxKhUL1Qr1T8dDbGlCAAYdpa88o93b3yCwy8ZYkSe?= =?us-ascii?q?ng6SS2JJ7F4FFPPvNDkD1sm8jfpOgR2vfdFC8X7mSHZBdv3yOC0Z6NC+zq8umW?= =?us-ascii?q?z9HUTVwGFDYsU4hBPDqC5RCnRu2tmZXxSAyU9tP8gJIwdUKXXHyxn70Jsr1SHu?= =?us-ascii?q?5EiyX72CVeF4/uivKNqdWs9HdYtl1JEYZ09x3FG79TPpZlNhTikMmkWEx8CjH4?= =?us-ascii?q?eMHOeRokoPCWyfsU4+ViK0v+YpcWIg4ey73k7XpaVA1uR6Dts1mEXOIRa9pmSO?= =?us-ascii?q?/eoXBO841gMbIPMEKbpJP0sjdCsEo2DxMxaL8ssjxacVHDnAJPVKbuprEAlgsc?= =?us-ascii?q?XMV9uU9NBWK/JmI+6CDaVaROlqWRDuIa8imLRKwUT0poKj9+Qw+y2Jh2dLumg/?= =?us-ascii?q?ZHsn9BniN6p/QqyCJpRB+9uS3quqIM1ikt+LWmuzUbuX1KVP+SkyHWBlVf1P4K?= =?us-ascii?q?l7sTC27+6VygZ3kOdI3y4Lh7KsTn8Yku+W8/bQ8ify0BWuSgEDrwgriNAoGAv9?= =?us-ascii?q?NQnhmNuN/BbbWrNygdKqw9yQ7/R3h6ygXekwpn8HAQQjm58dEqK4OzOccjxiq1?= =?us-ascii?q?FmnWb1kM4qZTv8v3q1EHVuw2aUluwG97yMiIWjUNRNDTG2YylgUka2JEcJJF6R?= =?us-ascii?q?MAC6YogjKIvrRb8QAVYTfUFJ+l+orRncrTx3k9TMlqyXjSpqKYh5MmyntllM1o?= =?us-ascii?q?7iSWonQda/TYU9NwAnj0zopfyPL+aO+rsu0cTItm1amuUP4FMsm442e2349qWk?= =?us-ascii?q?C9zLQEA1W5KPMDxqvcUyq9S22XR+qLc2aInzsiPE/9/x+oIUMraMtQqU8yLPfC?= =?us-ascii?q?jIZGlwL9SbN0WjmQpVjDwWwsNeMacAw3t5mjewwOV+MRfO+cJe4vwPIiElcMaW?= =?us-ascii?q?HGHTduAe+srVGthJR7O2ln4UjiY+Tt8gDnMMOVGhkAEI7asoB+9Oe/RmKAJX9g?= =?us-ascii?q?1gN9MFNz9+fFGFQ7rvVcfIqJndjMm9R71vYId+tsMS04odMThoNj5pWX0MiUdR?= =?us-ascii?q?Hd1JDyKs/JovKAGf3Q01wqen1GUroeeQ714oQ6Pt06W73UBrZZvw4TBas9QJwn?= =?us-ascii?q?KWjx8rt4LAVtfQ7NfL60mNXlpvqXZptIoH/b9kk/Iznaux0f0fG0Vgh7b5e2h3?= =?us-ascii?q?XuPpA/WC9Oo8dqCht8E4tFA9kAoBa/A56IhKG7jMe8+01ktO8OsKrwEu7F2c+4?= =?us-ascii?q?3oVwWpha4FKEPCzVBKZ1mEhlif6ygvjY2JnrFcziYc8EVPR8QmPdZL7GBp+/Kj?= =?us-ascii?q?OSNc3iYENG9r+c0K5jUhqPfiz5WLCGtCK8PvV+/Uo70pB4fPbUzDE16LHb3MX9?= =?us-ascii?q?anpDpient3GJL4df7F3WCuzCRRJbV+SK/HxjHaIJcYv+7P0OPsA6wNiA/wlz6y?= =?us-ascii?q?xP0M+EI6ins0/N1Vt3dZbaLEvyxyY5QpIHIBWlPksqhm/VsHPdAW5TLsK8M8li?= =?us-ascii?q?nM6VDgDx50l2gWwtfXBOGm7pRdeXJGga1MWyagKW9AJLEdkDhfC4eVYiuaCpSu?= =?us-ascii?q?lnJI9FmeO0u7UDitlpNi7PSNJdPyHKI798JiBRAfnXpFg0fh4EtKA4WoIvapeS?= =?us-ascii?q?IEMHMUGAySTpwAvc0E30ccKj1KKIICYQ73VGwKjJ0T9Wpwm2ofyZmNHsUKjFbJ?= =?us-ascii?q?HqW/7fKCglWSuZRTQ1Ckmk4kqku/wYvPqYJmcfv18UYiKOCAIJoKBgs8TQBHfJ?= =?us-ascii?q?meJ/ZJ0KmOyaWyfoRSJjj6U+ASJLtUGXQ/ofDgnadWThj3RAtwC4Pf9D43blb7?= =?us-ascii?q?yexqpIVO0bGZdDc/2DQ9vFYvBSPTkpmS8FOOaneN3cqaw10lXSTWsWC6PI7kGR?= =?us-ascii?q?TFaKQvyAwDLmRYoVsJIvtSoy+9LfgCt3Hr/WP7abvTGu6Y+4jDuCte3YSGYtf1?= =?us-ascii?q?Q/gPgeD2mZ3BlANGYEBskXuEHoRa6AfVxM1HMyie913R8DYgFzXWNv0nFMm/a9?= =?us-ascii?q?AMJZQ0YOjGyyWP0GcEx3DDQo8E+R7A3yZMAPtMHQSmJF6LsDV5AdLPgp6YnQPq?= =?us-ascii?q?sc2vAp0yx6oCYiqSWSE0tdjh6Z86rXBK98xLpC5W88//xtW0GAXS7QcmbAyoq8?= =?us-ascii?q?F81A2z1ioXb62MrI7ahRM+5BqoV4BkoaKT5nLdDauzZaWCf73xX29w28FzeTPD?= =?us-ascii?q?kQ5h4LLDYZdeFt16l9vQqMPtPC7WuIuqQutVexDgCKGvy41dgDBsj32ACQZSBV?= =?us-ascii?q?fDCvEJ5q7PBAiJJaZaIheJj7CFnHBhbxAxjeuC0W8hXu5LOxAo4CxGgCnqgyAM?= =?us-ascii?q?/mUpNMDtTD2jx8hXFSy95HyWyXH8OaZZDj7cF8LW8BO4P7SnTxZp/NeTLou6Mt?= =?us-ascii?q?yJArQlmTbOEbNWcduNgskW3ndU+z0Yb24iKJaKq/cG/qcPoSOYil3jEdyp3KMZ?= =?us-ascii?q?njsrkbUCIK?= X-IPAS-Result: =?us-ascii?q?A2FeAgD9znhY/wHyM5BdGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBgxQBAQEBAR9fgQmOSpEDkHaGHTwmC4gKUwEBAQEBAQEBAgECY?= =?us-ascii?q?CiCMxsBDD0KAy8BAQEBAQEBAQEBAQEBAQEBARgCDUMBASACJBMUIAsDAwkCFwg?= =?us-ascii?q?hCAgDAS0VGAcLBRgEiGIOsjM6JgKJZAsBAQEBHgWIT4ZtAhEBhgABBJAdixWGX?= =?us-ascii?q?Ip9AopEhiUCSJIdWHFTT4Q1HIIAUgGGKA8XghcBAQE?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 13 Jan 2017 13:03:19 +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 v0DD2OAO025561; Fri, 13 Jan 2017 08:02:34 -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 v0CMfS14149739 for ; Thu, 12 Jan 2017 17:41:28 -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 v0CMfRqM003485; Thu, 12 Jan 2017 17:41:27 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1BmBACWBXhY/yNjr8ZdGwEBAQMBAQEJAQEBgzwBAQEBAR9fgQmOSaF5gkSEHBoQhXiCClMBAgEBAQEBAmOFP1IwgQ8SiQAOskE6igwBCyEFiE+GbYJ8DIMMBZAbixGGW4p7ApBmAkiSHFeBRE+ENByCAFIBhiiCPQEBAQ X-IPAS-Result: A1BmBACWBXhY/yNjr8ZdGwEBAQMBAQEJAQEBgzwBAQEBAR9fgQmOSaF5gkSEHBoQhXiCClMBAgEBAQEBAmOFP1IwgQ8SiQAOskE6igwBCyEFiE+GbYJ8DIMMBZAbixGGW4p7ApBmAkiSHFeBRE+ENByCAFIBhiiCPQEBAQ X-IronPort-AV: E=Sophos;i="5.33,220,1477972800"; d="scan'208";a="5905473" 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; 12 Jan 2017 17:41:25 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3AROvpEx9IoISlK/9uRHKM819IXTAuvvDOBiVQ1KB2?= =?us-ascii?q?2uscTK2v8tzYMVDF4r011RmSDNmdsKsP07GempujcFRI2YyGvnEGfc4EfD4+ou?= =?us-ascii?q?JSoTYdBtWYA1bwNv/gYn9yNs1DUFh44yPzahANS47xaFLIv3K98yMZFAnhOgpp?= =?us-ascii?q?POT1HZPZg9iq2+yo9ZDeZwpFiCCzbL9vIxm6sQvcvdQKjIV/Lao81gHHqWZSde?= =?us-ascii?q?RMwmNoK1OTnxLi6cq14ZVu7Sdete8/+sBZSan1cLg2QrJeDDQ9LmA6/9brugXZ?= =?us-ascii?q?TQuO/XQTTGMbmQdVDgff7RH6WpDxsjbmtud4xSKXM9H6QawyVD+/9KpgVgPmhz?= =?us-ascii?q?kbOD446GHXi9J/jKRHoBK6uhdzx5fYbJyJOPZie6/Qe84RS2hcUcZLTyFPAp2y?= =?us-ascii?q?YZYBAeQCOuhVtJXxq0cUoBeiHwSgGP/jxzlVjXH2x6061OEhHBnI3QwhG9IOtH?= =?us-ascii?q?XUo8/wNKsITe+51rPIzTLYYPxIwzf99JPIfwsgofGKQbJ/b87RxVMzGAPCi1Wd?= =?us-ascii?q?r5HuMT2S1uQIqWeb7uxgWPqui24htwF+vDyvyt0whYnOg4IYzE3P+yZhwIstON?= =?us-ascii?q?G1TE12bcS5HJZStyyWLY97T8c4T2xmuCs20qAKtJq4cSQQ1ZgqxR7SZ+aDfoWM?= =?us-ascii?q?+B7uV+CcKipiin1/YrKwnROy/FCgyuLiUsm0105HriRAktnXs3AN2Abc5tSbRv?= =?us-ascii?q?dj50uh2CqA2BzJ5uFKJEA4j6vbK5g9wrEukpofq1jMHijzmEnuja+WcFsr+vSw?= =?us-ascii?q?5uj6ZrjrpYWQO5J2hwz+KKgjnsiyDf42PwUOR2Sb/P6z1Lzn/U33WrVKifg2n7?= =?us-ascii?q?HXsZDbIcQboq+5DBVQ0oo59xmzFS2m0NMDknYZNlJFZAmHgpPoO1HIPPD3E/O/?= =?us-ascii?q?j06wnzdswvDKJqfhDYnVLnjfjLfheq5w61VBxwoo1t1f+5JVBa0BIPL0QEPxss?= =?us-ascii?q?fYAQUjPwy7xObnFs131pkCVmKXHq+ZLKTSvEeT5u0xJ+mMZYkVuCvyKvU++/7v?= =?us-ascii?q?jWM2mV8afaWz25sXc2q3Eu5pI0Wef3q/yusGRHwHugs4UfzClEyJUTkVYW27Ga?= =?us-ascii?q?07+HVzE4WtDorfTYmrqLyIxju4GYVOIGZLFhTEFHTsX52JXfgRdDiVJM5x1DAJ?= =?us-ascii?q?EfCtQpEs0DmivRH3zr5gIPaS/CAE8drn1d5o96jYnBca6zN5FYKe3nuLQmUymX?= =?us-ascii?q?kHA3cw0bxzrFJV1FiOy+57juZeGNgV4OlGFk8+NJjB36l5Bsr0VwbpYNiEUhCl?= =?us-ascii?q?T8+gDDV3Scg+kPEUZEMoBNSmihHK2myhRaUSnbGRGIcc86TA0ny3LMF4mCWO77?= =?us-ascii?q?Uok1RzGpgHDmahnKMqslGLX4M=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0HrAgAuBXhY/yNjr8ZdGwEBAQMBAQEJA?= =?us-ascii?q?QEBFgEBAQMBAQEJAQEBgxEBAQEBAR9fgQmOSaF5gkSDWUMaEIV4ggpTAQEBAQE?= =?us-ascii?q?BAQECAQJgKIIzGwEMPQoDLwEBAQEBAQEBAQEBAQEBAQEBGAINQwFHUjCBDxKJA?= =?us-ascii?q?A6yQTqKDAELASAFiE+GbYJ8DIMMBZAbixGGW4p7ApBmAkiSHFiBRE+ENByCAFI?= =?us-ascii?q?BhiiCPQEBAQ?= X-IPAS-Result: =?us-ascii?q?A0HrAgAuBXhY/yNjr8ZdGwEBAQMBAQEJAQEBFgEBAQMBAQE?= =?us-ascii?q?JAQEBgxEBAQEBAR9fgQmOSaF5gkSDWUMaEIV4ggpTAQEBAQEBAQECAQJgKIIzG?= =?us-ascii?q?wEMPQoDLwEBAQEBAQEBAQEBAQEBAQEBGAINQwFHUjCBDxKJAA6yQTqKDAELASA?= =?us-ascii?q?FiE+GbYJ8DIMMBZAbixGGW4p7ApBmAkiSHFiBRE+ENByCAFIBhiiCPQEBAQ?= X-IronPort-AV: E=Sophos;i="5.33,220,1477958400"; d="scan'208";a="2260892" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from fmsmga002-icc.fm.intel.com ([198.175.99.35]) by emsm-gh1-uea11.nsa.gov with ESMTP; 12 Jan 2017 22:41:22 +0000 Received: from fmsmga003-icc.fm.intel.com ([198.175.99.8]) by fmsmga002-icc.fm.intel.com with ESMTP; 12 Jan 2017 14:41:22 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,220,1477983600"; d="scan'208";a="808219404" Received: from sgottipa-mobl1.amr.corp.intel.com (HELO wcrobert-MOBL1.amr.corp.intel.com) ([10.252.129.226]) by FMSMGA003.fm.intel.com with ESMTP; 12 Jan 2017 14:41:20 -0800 From: william.c.roberts@intel.com To: selinux@tycho.nsa.gov, socketcan@hartkopp.net, mkl@pengutronix.de, davem@davemloft.net, linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] can: Fix kernel panic at security_sock_rcv_skb Date: Thu, 12 Jan 2017 14:40:55 -0800 Message-Id: <1484260855-15844-1-git-send-email-william.c.roberts@intel.com> X-Mailer: git-send-email 2.7.4 X-Mailman-Approved-At: Fri, 13 Jan 2017 08:02:23 -0500 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: Cc: Zhang Yanmin , Liu Shuo A , He@tarius.tycho.ncsc.mil, sds@tycho.nsa.gov, Bo MIME-Version: 1.0 Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP From: Zhang Yanmin The patch is for fix the below kernel panic: BUG: unable to handle kernel NULL pointer dereference at (null) IP: [] selinux_socket_sock_rcv_skb+0x65/0x2a0 Call Trace: [] security_sock_rcv_skb+0x4c/0x60 [] sk_filter+0x41/0x210 [] sock_queue_rcv_skb+0x53/0x3a0 [] raw_rcv+0x2a3/0x3c0 [] can_rcv_filter+0x12b/0x370 [] can_receive+0xd9/0x120 [] can_rcv+0xab/0x100 [] __netif_receive_skb_core+0xd8c/0x11f0 [] __netif_receive_skb+0x24/0xb0 [] process_backlog+0x127/0x280 [] net_rx_action+0x33b/0x4f0 [] __do_softirq+0x184/0x440 [] do_softirq_own_stack+0x1c/0x30 [] do_softirq.part.18+0x3b/0x40 [] do_softirq+0x1d/0x20 [] netif_rx_ni+0xe5/0x110 [] slcan_receive_buf+0x507/0x520 [] flush_to_ldisc+0x21c/0x230 [] process_one_work+0x24f/0x670 [] worker_thread+0x9d/0x6f0 [] ? rescuer_thread+0x480/0x480 [] kthread+0x12c/0x150 [] ret_from_fork+0x3f/0x70 The sk dereferenced in panic has been released. After the rcu_call in can_rx_unregister, receiver was protected by RCU but inner data was not, then later sk will be freed while other CPU is still using it. We need wait here to make sure sk referenced via receiver was safe. => security_sk_free => sk_destruct => __sk_free => sk_free => raw_release => sock_release => sock_close => __fput => ____fput => task_work_run => exit_to_usermode_loop => syscall_return_slowpath => int_ret_from_sys_call Tracked-On: https://jira01.devtools.intel.com/browse/OAM-40528 Signed-off-by: Zhang Yanmin Signed-off-by: He, Bo Signed-off-by: Liu Shuo A Signed-off-by: William Roberts --- net/can/af_can.c | 14 ++++++++------ net/can/af_can.h | 1 - 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/net/can/af_can.c b/net/can/af_can.c index 1108079..fcbe971 100644 --- a/net/can/af_can.c +++ b/net/can/af_can.c @@ -517,10 +517,8 @@ EXPORT_SYMBOL(can_rx_register); /* * can_rx_delete_receiver - rcu callback for single receiver entry removal */ -static void can_rx_delete_receiver(struct rcu_head *rp) +static void can_rx_delete_receiver(struct receiver *r) { - struct receiver *r = container_of(rp, struct receiver, rcu); - kmem_cache_free(rcv_cache, r); } @@ -595,9 +593,13 @@ void can_rx_unregister(struct net_device *dev, canid_t can_id, canid_t mask, out: spin_unlock(&can_rcvlists_lock); - /* schedule the receiver item for deletion */ - if (r) - call_rcu(&r->rcu, can_rx_delete_receiver); + /* synchronize_rcu to wait until a grace period has elapsed, to make + * sure all receiver's sk dereferenced by others. + */ + if (r) { + synchronize_rcu(); + can_rx_delete_receiver(r); + } } EXPORT_SYMBOL(can_rx_unregister); diff --git a/net/can/af_can.h b/net/can/af_can.h index fca0fe9..a0cbf83 100644 --- a/net/can/af_can.h +++ b/net/can/af_can.h @@ -50,7 +50,6 @@ struct receiver { struct hlist_node list; - struct rcu_head rcu; canid_t can_id; canid_t mask; unsigned long matches;