From patchwork Wed May 23 01:18:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kent Overstreet X-Patchwork-Id: 10421013 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 17C4160224 for ; Wed, 23 May 2018 12:06:15 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0501E28EEF for ; Wed, 23 May 2018 12:06:15 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EDA3628F31; Wed, 23 May 2018 12:06:14 +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=-5.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=unavailable 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 3F87B28EEF for ; Wed, 23 May 2018 12:06:13 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.49,432,1520899200"; d="scan'208";a="702742146" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.3]) by ucol19pa09.eemsg.mail.mil with ESMTP; 23 May 2018 12:06:12 +0000 X-IronPort-AV: E=Sophos;i="5.49,432,1520899200"; d="scan'208";a="13655923" IronPort-PHdr: =?us-ascii?q?9a23=3A+wJ5oh2pC9aXEDHVsmDT+DRfVm0co7zxezQtwd?= =?us-ascii?q?8Zse8eKv/xwZ3uMQTl6Ol3ixeRBMOHs6kC07KempujcFRI2YyGvnEGfc4EfD?= =?us-ascii?q?4+ouJSoTYdBtWYA1bwNv/gYn9yNs1DUFh44yPzahANS47xaFLIv3K98yMZFA?= =?us-ascii?q?nhOgppPOT1HZPZg9iq2+yo9JDffwtFiCChbb9uMR67sRjfus4KjIV4N60/0A?= =?us-ascii?q?HJonxGe+RXwWNnO1eelAvi68mz4ZBu7T1et+ou+MBcX6r6eb84TaFDAzQ9L2?= =?us-ascii?q?81/szrugLdQgaJ+3ART38ZkhtMAwjC8RH6QpL8uTb0u+ZhxCWXO9D9Qr4uWT?= =?us-ascii?q?Sm8qxlVhnmhikaPDI96W3bl9B8gKddrRm8pRJw3pTUbZmVOvRgcK3TftQUSm?= =?us-ascii?q?hPXshMTyxMAJ6wYoUAAOUdMuhXsZL9qkASrRa8HwSgGPnixiNWinLwwKY00/?= =?us-ascii?q?4hEQbD3AE4GtwBrnLUrMnoP6kLT+C60rPIzS7fb/NMxzjy9pTIeQ0mrPGPQ7?= =?us-ascii?q?1wd9bRxVMoFwPbkFqQs5flPy+P1usTrWeb8/FtVe2qi2E9qgFxpiKjydsrio?= =?us-ascii?q?nMn48YzE3P+yZhwIstONG1R0F2bcSkHZdNrS2WKYR7Tt04T211oCo3yKAKtY?= =?us-ascii?q?SlcCUEx5kr3QPTZv6Zf4SS/B7vSemcLDFlj3x/Yr2/nQy98U24x+35Ucm7zU?= =?us-ascii?q?hFozJektnJqnANzxvT6tWbSvdl/keuxzKP1wfL5+FYO080j6vbK4M6wrIqip?= =?us-ascii?q?oSsVjMHi/xmEnsiq+Zal4k9fSy5+TiY7XmooeQN45yig7gLqQjgtGzDOs3Pw?= =?us-ascii?q?QUX2WX5P6w2KPs8EHnWrlGk+U6kqzDv5DbIcQbqLS5AwhQ0os78BawETOm0N?= =?us-ascii?q?UenXkaI1NJYQmIj4/0O1HIPP/3E+y/jk+wkDZr2//GPrrhDo/LLnjYirjtZ7?= =?us-ascii?q?l960lCyAYr19BQ+4pUCq0dIPL0QkLxttvYDhkjPAyow+boEtN925gcWWKIBK?= =?us-ascii?q?+ZNbndsUSU5u0xOemMf5UZuDHnK/gq//Tul2M2mUcBfam12psacHK4HvZ8LE?= =?us-ascii?q?qFYnrsmdABEWELvgogV+HqhlmCUSNcZnmpQqI84C07CJ+8AYfEXICtj6SL3D?= =?us-ascii?q?2nEZ1OemBGFleMHG/mdoWFX/cMbTydItV6nzwKS7euVogh1Qu0uw/i0bpnKe?= =?us-ascii?q?jU9TMEupL/ztR14PfTlR4q/zxuE8udy32NT31znm4QWjA5wKV/oUt7ylefzK?= =?us-ascii?q?R1mOJYGsJJ5/NIUwY6Mpjcw/Z8C9/sRgLLZs2JR0q+QtW6HTExSco8zMISY0?= =?us-ascii?q?lnAdWvlQzM3y2vA7AJjbOLH4A0/rja33fvO8Z302zG27U5j1k6XstPMnWrib?= =?us-ascii?q?Bn9wfJHY7Jkl6Zmr2ydasGxi7N9XyDzXKKvE5CTAF/T7/JXXcFZkvZtd75/F?= =?us-ascii?q?/NT6eyCbQ7NQtM0cCCKrFQZd3vkVpGRezjNc/bY2Kpmme8HA2Ix72XbIbwfG?= =?us-ascii?q?UdxirdAlAekw8P5XaGKRQ+BiC5rmLdFjNuFlXvY173/Ol9sny7TUg0zxyQY0?= =?us-ascii?q?1mzbq19QYfheaARPMLwrIEpCAhpi1uE1mgxdLWCsSPpxB6capGfdw95U1L1W?= =?us-ascii?q?XDtwxyJpagNbxthkYCcwRruEPjzw93BZhdnsUxo3MqyQVzJbie0FxfazOSxY?= =?us-ascii?q?rwNaHPKmnu4BCvbLbb2krQ0NaM/acP8+g4pk74vAGvEUoj/XBn3MNT03eG4J?= =?us-ascii?q?XFEhYSW4rrUkkr7xh6u63aYi4l6oLaz3JsNbW0vSHY29IyH+Yl1Aivf81EP6?= =?us-ascii?q?OZEQ/+CcoaB9KhKOYygVimcgoEPPxO9K4zJ86mcfqG2KqvPOl+hzKrln5I75?= =?us-ascii?q?5n0kKL7SZ8TfTI35kdyfGCwgSHTyv8jEumss3vh4BEZC0dHna4ySj+HoJeeq?= =?us-ascii?q?1yfYENCWehOMC3wtR+h5j3VH5C816vHVQG2NWmeRCKdVzywRVQ1VgLoXyggS?= =?us-ascii?q?a4yz10kyo1rqaGxyzB3eDidBsBOm5WS2hvlkzsIZC1j9AcXUincxMpmAGj5U?= =?us-ascii?q?nk26hRvL5/IHXLQUdUYyj2KHlvUrG3trqGZ85A9okovjlQUOWyel2aUaP9rA?= =?us-ascii?q?cB0y/5GGte3j87fSmwuprlhxx6lH6dLHFroXraZ85wwwzf6cffRfFP2DoGXy?= =?us-ascii?q?94hifLBlSmONmp59qUnY/Zsu+iT2KhSoFTcS7zwIOYriS7+GlqDgOnn/+pnN?= =?us-ascii?q?3nDRY10TXg2tl3TiXHsgz8YpLx26ShNuJnY1NoC0Pi5Mp0HYF+iIQwi48K1X?= =?us-ascii?q?gcmJqV4WINkX3vPtVDxaL+cH0NSCYVw97T/Qfow1NjLnSUyIL5THmdxNVuZ8?= =?us-ascii?q?WiaGMMxi0999xKCLuT7LFchSt6uEe4rQbKbPdhnzcd1fsv5GcUg+4Tvgoh1C?= =?us-ascii?q?KdAqodHUNAJyzjiwyI78yirKVQfGuvf6K/1ExindCmCbGPuQ9cV2jkdZclBy?= =?us-ascii?q?9/9N1/MEjL0H3x9I7rZMXQYcgUth2OnBfKl/JVJ44plvoWmSpnPnrwvXg/xO?= =?us-ascii?q?4/iRxhw426vJSdJGp356+5BABXNiHuZ8wP4D7tlbhRktyQ34+xApVrAi8LU4?= =?us-ascii?q?fwTfK0DDISsuzqNwiUEDIit3ibAqDQHQmD6EdhtHLCCIqkOG2SJHUDytViXh?= =?us-ascii?q?adLlRFgA8IRDU6goI5Fgeyycznakd2/CgR5kbjpxtCy+JoLQL/UnvRpAepbD?= =?us-ascii?q?c7Up6fIwZX7g5Y40fZK8ue7vh8HytA5J2usBSNKnCHZwRPFWwJQlKLCEv9Mb?= =?us-ascii?q?mo5NnA7++YC/G/L/TQf7qBt/ZSV/CSxZKgyoFm5SqDNt2TPnl+CP02wlFMUm?= =?us-ascii?q?t+F8TdmjUPUDAXlznXY86Auhiz5jd7rtuh//TvWQLv45aPCrRJPNpz+xG2m7?= =?us-ascii?q?qDN/WKiCd3MzlYyogMxXjOyLQF214SkS5ufSG3EbscrS7NUL7QmqhPAhEAai?= =?us-ascii?q?NzO8xI76Qn0wZQJ8HUkdL12aR+jvIvDFdFT1PhkNmzZcMWO2G9KE/HBEGTOb?= =?us-ascii?q?ucKj3E2d/3br2nRL1XlOVbqRuwuTOBHE/iOjSMjD7pVh+1PeFLliGbMwRUuJ?= =?us-ascii?q?uhfRZ1FWjjUNXmZwWnMN9wiD0626c0hnTLNGECNzhzaFlNrrqO4iNbmfhwB2?= =?us-ascii?q?tB7n95IuaegCaZ8/PUKpAIvvt3Gi50jf5V4Gwmy7tJ6yFJXP51mCvSr952pF?= =?us-ascii?q?GmluiPyiZ5XxdVrzZLhZ6LvV98NqnD8ZlAQ3nE9goX7WqMExQKu8dlCtr3tq?= =?us-ascii?q?BTytnPkLz8JSxH89LT88scCdbbKN6bMHohNhrpHSDbABEDTTG1KWHVn1Zdn+?= =?us-ascii?q?2K9n2Jspg6rYDhmJwQRbBBUFw4DfAaCkN+HNweOph3WCgkkb2ajMIS43qxsg?= =?us-ascii?q?XRTt1Avp/bTvKSHenvKDGBgLleeRQI2q33Ip4JNoLn20xvcUJ1nIXQG0XNWt?= =?us-ascii?q?BNrDVhbhUqr0RN6nR+SHM82179YAO3/HATDeK0ngIxigZmfOst8zHs41EqKV?= =?us-ascii?q?XUoCswkVI8ls/7jjCLdz79NqCwXZtZCyDsrUg+Lov7QxppbQ21hUFrKS3LR6?= =?us-ascii?q?xQj7R9bmBmkxXTuYFVGf5bQ6xEewEfyu2KZ/Uy0FRctiWmyVVB5eTbFZtojB?= =?us-ascii?q?EqfoK0r3JcxwJja8Y4JajXJKpT0FdQgKOPviiz2+A+xg8eOlwB8GSIeC4HoE?= =?us-ascii?q?YILKUpJzK0/uxw7gyPgyBDd3YIV/orpPJq60w8Nv+cwCLn1r5MNlq+N/eDL6?= =?us-ascii?q?+DvWjPi9KISEsq1kwUj0lF4aR20cA7fkqIVkAvybyRFwgJNcvCMgxacstS9X?= =?us-ascii?q?jJcimVq+nNx4x6P5mlHODyUeCOrLoUgl6jHAsxBYsM6sUBEYWy307AKMfmLL?= =?us-ascii?q?gFyRIr5AvxP1iKF/VJdwiNkDsercG/0YV73Y9DKTEBGW99Kzm45q7Lpg82h/?= =?us-ascii?q?qORMw5bWkcXoYfLH05RdO6lDBDv3RbFja3yOIYxBKF7z/mqSTaFCP8YMZ7ZP?= =?us-ascii?q?eIeRNsD8m7+Toi86i3jV7X9ovRJ2ThONt/pNDA8uIaqIyBC/9OSrl9qUjckZ?= =?us-ascii?q?FCR3O2S27PDcK1J5/oZok2a9z0C2q1Uly4izIxVMf/JM+jILWSjwz0QohZq5?= =?us-ascii?q?WU3DcmNcChDD4eAAtwq/sF5K1ieQ0Je4A7bgLwtwQiK6y/Jx+V0s+0TGa3Lj?= =?us-ascii?q?tZVOJSzfmgZ7NN0SojcOu6yHomTpE1y+m38EENRJEWjhHQ3/mjfYxeXTL1Gn?= =?us-ascii?q?NDZwXFvTA5mHR5NuYu3uc/xwvFsFcGPz+XdOxpaWlEv9AmClOROnh2C3Q3SE?= =?us-ascii?q?GCgobZ5Q6sxb8S9TNHn9lIye1FrGT+vpjHbTKpQqOrs5bVvDQ8bdgnpa1xPp?= =?us-ascii?q?fuI8Wcu5PYgjPfSJ7QshCYXy6hDfZanMZfID5ASvlShW4lIdAGuZZG6UcpTM?= =?us-ascii?q?g+PaFPCK82qrCpcjdkDC8SzS4FV4ybxjAChPmz26fCnBeKbJsiKAAEsIlFgt?= =?us-ascii?q?YFUi52ZD8eq7GnV4rIkm+LVHQLIB0T7AlX4wIAjpF/fubg4IXSTZ9MzyVZo/?= =?us-ascii?q?V7UyfREZlo7VT7QHmMgVfkUPWhj/Cp3QVKwfLw1dkbXQVyCVRBy+ZTjUQkMr?= =?us-ascii?q?d3JLcMvoTSqD+HaVv6vH7xyOuhPFRRydfbd0fiA4rBqGXxSTAT9mMMRY9X1n?= =?us-ascii?q?7fEYodkxBjZKYsvlVML5iselzi6Dw824RpA764WNipx1Yis3kLXDqlHMRaC+?= =?us-ascii?q?54qlLXRCNqbI2xpJXjJZpSXnda+IeBpFdBjEVtLym5xIJAK85Q/zEMXSJAoT?= =?us-ascii?q?GGsdSuT81D3NN5AIUXItdjoXv9Hr1LOISJqX0sprPv0mPZ+yw7sFqi3zqzFb?= =?us-ascii?q?O3Q/5b8mEDFAgkPHiRqk4qD+Qw6GjS6UzNvkpy/+hFGriFlV9xryplHpBSGj?= =?us-ascii?q?ZJ0mioL05tQ3Zbs+VVMrjVftdYQ/k1ex+gJQIyGuIh30OU4054h3H5bDJutg?= =?us-ascii?q?FC4SDSQxE0VTUJgrfqgTAestqnOSMARJ1VcTUsdDzFKwWGmSBNoBlQdUdqW4?= =?us-ascii?q?wDAtlf/7EXx4xU/tDNSUy0MyEKQARiNh4k0fpYjUNDrF+Ydj7DAgW1bvvPrx?= =?us-ascii?q?l3fduLrMGzMvT5/QBHiof5v+Ak7akDQGemmQK1S9DEs4D8rsGKtleJdKrgMe?= =?us-ascii?q?2ze2XBTD/XjRC0n7gkEYLH/y3OMApfN5l6yGYrYZn7Bm7NJhRKPaUbJ1BUVa?= =?us-ascii?q?pic9VJvvhaZ9N4eKYO4aJtBAiIRhXhGIy1q/lJM0jcSC/CLyqb9Oy/uoXT4a?= =?us-ascii?q?bbSef+esyG32zHTL5vPpdm9Tn7HK/n0Yla+kft2/dt8EZ6RULHMyCHotThPB?= =?us-ascii?q?kE5NK+dkv4o50mAS/WAIpqkHXz3E1AcNAXQyKy+pQC1JxZ8GrwSf5/0kXrtu?= =?us-ascii?q?1S9qVr6Y4z479z0se4P6bSKfNdsU98GRiZHQBq+5oiAWRlQGBReOARIu/Lfa?= =?us-ascii?q?sFlcDut/z3F6sP5RKJ4eNZbcXIJ1rdmsi/DTGRUgdEkxsAqTEEKAucy/+FlL?= =?us-ascii?q?VuRcaju+f5xlon40KiIR4e0LBt+YCE97KMpO/MahvczaMJWqb0SczuqbQsoV?= =?us-ascii?q?md5eU+lL4JeGx6fRGoEPQHWs4a3GfgwrggzTgwHMPbA7Lg5PlDWmo7njLhnp?= =?us-ascii?q?BwBFAWFe0UHLWV54Ren2E4m+PDOt0QbK9Chn6FFQS4Hb8a1X6r9yyXLXFkgh?= =?us-ascii?q?DPyR7/W3+84UTtrSBmXSvD0cvsnlBSVrmtCkdYRzCpNlNgsDOTIAros8L6tr?= =?us-ascii?q?807EEtPG3rrtCNlGq9OLNPBcL/OdicLDIoq1IQkZI+WMag2Z0BGdq6Otce6m?= =?us-ascii?q?tybvzE62OkiyVBubtIh5LC4sGJ/fXaBWGggLeGq7qRxDBZxH84vUs86ty5Lf?= =?us-ascii?q?HB+dmKQ/Wu12YMQCZyoBPBUASpqrPHr1AVN0uL0F3ImIAQPdFWw2M41kf46+?= =?us-ascii?q?gnWt4z8x9eFonYbfMYuT/zICf0wUqYY98vWSmRySFXEUzpEVl4A6U83GPwvN?= =?us-ascii?q?7XmnfQ4VIoW5Jwe1bhhRNpE4UyMVgt50QPwiofDQgNbgiWDL62CkTjMYsEUk?= =?us-ascii?q?8DZROc3Lekfqc33Etzwq6g5eLIaexzGbANN/ZHgQKUmlhUBI4Wu7UEQL1gY1?= =?us-ascii?q?9d6LLXpg/6Bof7Xfjpj2Y/OOapTcBd9cAZs3oi7RilRxq895hM87YbhIqPdq?= =?us-ascii?q?5ebpjGpNp84Ft/5T4TaixNhwByjxa+UeAauODj7cbUvYGt6uavTqktQfsY9w?= =?us-ascii?q?Q6BmR5lZvwg0sjrcvR1+hCVo3fkZ7//xxVI36WpIba1AFxKeUSJIKwZ7Zs7m?= =?us-ascii?q?gJKScYKXIPO9qWdvY97jRiMDXW/VNCBN0DackfPMrXlgBeklfpV61L9srHBl?= =?us-ascii?q?+YDJ9+d8Iv72r3zjA564czUubk6D+rOJ/e7lBNP/VYjCVvldLPv/YVwfvMCC?= =?us-ascii?q?cN5XmWdhl1zjmEy5aTF/b65f+Mx83MV1MaAi42VJ9QJDuc+QO9QOq4j5HpUh?= =?us-ascii?q?6J5c/yh5I+b1icRnurnKQKqqxMC/JPij3n3jhCEYD4n/CVvMSi6GtZsl1KC4?= =?us-ascii?q?hy4gfDGKpBIpV3IxL4mde3RkJkHCvwZNnUdgYyuOqR3uoM7OF+N0zwZIAFJh?= =?us-ascii?q?IEz6n36WFSTgtoSb75okyVXeQPa9t6UPnEtGxa6Zp8K68TO1iQvJnqrjZLqF?= =?us-ascii?q?A1Bw8kc70woSZZdknJmg1aRaD0tKQGigQCTd5zoVVMFn6oOGIi+zrHUrxYg7?= =?us-ascii?q?KPB/wT7jWeVbcOU0FvMiNiXxO1xothdKazkfBAqGNGkTt3oOI23Dx+WBu8pS?= =?us-ascii?q?rsqroV2TIn/LG3ri8BuHJCTuWanSfFElBDzPMNjacHFXnt9Ua8YH4YbIvp4b?= =?us-ascii?q?lnI8vg+ZMm43QlbhUpZzcGUvi4CyHsk6OIBZSCsNxCix6JucXOdaG8IDMTN7?= =?us-ascii?q?Q8zBLjQmZy0hLanBl26mcLRS+g7NA8LoWnJckl3jaoGXTcdFsU7KJJqNHxtV?= =?us-ascii?q?8XQ+Qocl5hxWRj0tSdRiITXsDPHHw1jgc8Y2VebJ1D8QMaF7UvgjuQualG+h?= =?us-ascii?q?8bbSzMEoSh4IbQhtvI2XghQtd23GLZuLOKioks0HJ7h9N+9jSOt2gKd+zET8?= =?us-ascii?q?9sBWD+1oNeyez4evWsvfkLSI9nyLS6TP8CKdKu+Wqs15VsXU+p3LMeH0C2MO?= =?us-ascii?q?Ub3LfUTz+lSXGEWeSMa2WMmiw2PVLy5RmpKF03b9xHr1E8MuvEmJFckwzhUb?= =?us-ascii?q?VpRiSfv1Pby3YjMewCfQIspIinYxAKTPIWZ+WEJ+gh2v4+CFwXYHLSACt2Df?= =?us-ascii?q?O2sV6qnIhmNHVg4Vn6bf7r8g/4LNuYAgMEHpLCrp5t5fy6QXqMOX1lzB11Jk?= =?us-ascii?q?l07ebfF08qu+9aaZmRmMbfh9Vh3e4CbfdtPjU3usQPlYJ79YmUzMCKfAnKzp?= =?us-ascii?q?b8INHavvmVDv7EwkQ0ZG5aSLsZYALy54U8JNI5XaPcHacK9SgbUKw7RoExcm?= =?us-ascii?q?T87qd5KCttfQPLIre5mM/noqSMfJQQ72HX9FUYPiraugNFzv2yUBw9aIqlwW?= =?us-ascii?q?jxZNg5RSpEh9lsDAZ2WYVIBsUMphamBJjSn7u0z5eu+kd+qscLt6TqA/zH3d?= =?us-ascii?q?j/2J9+G9BV/0GEPzb5AKhtn1Rrifm0jv7c0573T8T4dpdMUOl9X36AcbLNA5?= =?us-ascii?q?++NiPLP8XwZkpL26CT3ag/URiLYi39Ga2cu2nsL/hg4EMm2qRkbeHTy3or9L?= =?us-ascii?q?id19zsIylXqzmLqmaEMoVE813WDuyYWAhbDbKe8GJkNa4ad4358KEJK9NmiN?= =?us-ascii?q?yd5RRjqS5L0cetPaestAnP11h9eJadK1HmiAgjXoxfAxm5LQMLn2LDsWjHDH?= =?us-ascii?q?lAZpynJM9xxtGLAwb2+1N8lH0FaWtIG26uTtCUbztIk/mibRGHoVoYR+0ImP?= =?us-ascii?q?S6LAth7vfoG+B1JpVIn/mrv7wbkNFvbjvCX9VeIzqPfe1rJjBdV7TXrQFxJB?= =?us-ascii?q?MJtqM6HII8ZJzIJUIDYyLigS/xzA6XyUTvbJTsz6eGJi8K729Kh6zIyzlCpg?= =?us-ascii?q?S1+L6Zj8TvXaqfbcTeU/vbMS5jXTafSA=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2AUBwBhWAVb/wHyM5BcGwEBAQEDAQEBCQEBAYNBA4EEW?= =?us-ascii?q?yiMWowEgwiTNxSBXRIYEwGEQIInITYWAQIBAQEBAQECAWscDEIQAYFiJIJQA?= =?us-ascii?q?wMBAiQTBgENDhILAQIBAgkBAQUQKwgIAwEdAg4DAQUBCxEHBwsFGASDAYFoA?= =?us-ascii?q?QMVA55pPIxuFgUBF4JwBX8EAYJIChkmDVVXgXQCBhKHKHyBVD+BD4VcgXEBE?= =?us-ascii?q?gE0hT8Ch0OQaywHAoFniXOCdAuHVoUrii+GKQIEAgQFAgUPIYEEIwgpYXFwU?= =?us-ascii?q?DGCEoIUCwEXg0WKHFJTeQEBASiEUYUugjcBAQ?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 23 May 2018 12:06:10 +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 w4NC66qS020944; Wed, 23 May 2018 08:06:09 -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 w4N1IlN9036657 for ; Tue, 22 May 2018 21:18:47 -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 w4N1IlM0026098 for ; Tue, 22 May 2018 21:18:51 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1DVAAABwQRbly0bGNZcHQEBBQELAYNAg?= =?us-ascii?q?WIoi3pfjBaDCJM2gXgLLIRAAoIhITQYAQIBAQEBAQECFAEBAQEBBhgGS4U1AwM?= =?us-ascii?q?nGQEbHQEDDAYQOyECEQEFARwHEoMigWgBAxUDnmA8jG4WBQEXgnAFfwQBgkgKG?= =?us-ascii?q?SYNVFeBdAIGEocnfIFUP4EPhVyHeAKHPZBmLAcCgWeJcYJ0C4dThSuKKoYpAgQ?= =?us-ascii?q?CBAUCBQ8hgQQcggpwgQGCEoIUCwEOCYNFihxSU3krjRoBAQ?= X-IPAS-Result: =?us-ascii?q?A1DVAAABwQRbly0bGNZcHQEBBQELAYNAgWIoi3pfjBaDCJM?= =?us-ascii?q?2gXgLLIRAAoIhITQYAQIBAQEBAQECFAEBAQEBBhgGS4U1AwMnGQEbHQEDDAYQO?= =?us-ascii?q?yECEQEFARwHEoMigWgBAxUDnmA8jG4WBQEXgnAFfwQBgkgKGSYNVFeBdAIGEoc?= =?us-ascii?q?nfIFUP4EPhVyHeAKHPZBmLAcCgWeJcYJ0C4dThSuKKoYpAgQCBAUCBQ8hgQQcg?= =?us-ascii?q?gpwgQGCEoIUCwEOCYNFihxSU3krjRoBAQ?= X-IronPort-AV: E=Sophos;i="5.49,431,1520913600"; d="scan'208";a="283115" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.35]) by goalie.tycho.ncsc.mil with ESMTP; 22 May 2018 21:18:51 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3AJ6K5zR2o6IRyLTQ9smDT+DRfVm0co7zxezQtwd?= =?us-ascii?q?8ZseMfK/ad9pjvdHbS+e9qxAeQG9mDsLQc06L/iOPJYSQ4+5GPsXQPItRndi?= =?us-ascii?q?QuroEopTEmG9OPEkbhLfTnPGQQFcVGU0J5rTngaRAGUMnxaEfPrXKs8DUcBg?= =?us-ascii?q?vwNRZvJuTyB4Xek9m72/q99pHPbQhEniaxba9vJxiqsAvdsdUbj5F/Iagr0B?= =?us-ascii?q?vJpXVIe+VSxWx2IF+Yggjx6MSt8pN96ipco/0u+dJOXqX8ZKQ4UKdXDC86PG?= =?us-ascii?q?Av5c3krgfMQA2S7XYBSGoWkx5IAw/Y7BHmW5r6ryX3uvZh1CScIMb7S60/Vz?= =?us-ascii?q?a/4KdxUBLmlScJOSA3/m/UjcJ/jqxbrQm9qxBj2YPYfJuYOOZicq7bYNgURX?= =?us-ascii?q?BBXsFUVyFZB42zcY0PD/YcNuhBsYnyuUEOrQCiBQm2Guzg1CNIjWLx0K05ze?= =?us-ascii?q?shFx3G0BYnH9IQrnvUts71NLsIUe+r0qbI0S7Ob/xT2Tjn6YjIdgotru2LXb?= =?us-ascii?q?J1aMfcz1QkGQDdjliIt4DpIjyY2v4Tv2WU9eZsS+Cih3QopgxxujSixNoghp?= =?us-ascii?q?PXio8bxV3I7zh1zYQrKdGiVkJ3fNGpHZ1NvC+ALYR2WNktQ2RwtSY61LIGvZ?= =?us-ascii?q?m7cTAEx5o9yRDSdfKKfpaS7B//SOqcIC10i2x7d7K6nBay/lKsyujmWcm11F?= =?us-ascii?q?ZGtC9FktjItnwV1hzT7NaISudl80u/xDqC2Brf5v9LLEwui6bWKYQtz7Ewm5?= =?us-ascii?q?YLtETMBC72mEH4jK+McUUk//Cl6+f5bbXgup+QLYh0ih/gPaQ0gcy/Hf44PR?= =?us-ascii?q?YQUGiH4um827jj8lf4QLVOlPE5jq7ZsJXCKcQBuqG5GxNV0pok6xunFDepzt?= =?us-ascii?q?AYnXgBLFJYdxOKlJTpOlHSL/D4CvezmVKskCxxyPzcMb3hBYvNfTD/l+LlfL?= =?us-ascii?q?Bg+wtfxRA1wNR3+Z1ZEPcCLej1V0u3s8bXSlcnMhaz6/TqDtRjkIcfX3+fRK?= =?us-ascii?q?iDP+XPshvA7+E3JsGIZYkIqHPzLOUj6/fyjHg/31gHcu3hwpoTbGGQH/JoOU?= =?us-ascii?q?yVbHPgxNAbHiNCsRAzQ+/qoFmDVyNDaXGvWa41+jA8DsShF4iHDoSshqGRmT?= =?us-ascii?q?y2FYBMZ3xXT1WLHWrseq2aVPoWLiGfOMlslnoDT7flA5Qs0RCoqR/S16tsLu?= =?us-ascii?q?2S/DYR853kypw96+DNvRYq+DpqFNucz2qNCWZukSdAXD8y3Yh8rFZ7x1PF1r?= =?us-ascii?q?J3x7RcFNpO97ZTWwY2HYDTwvY8CN3oXA/FONCTRwWIWNKjVBI8SM555MEDeV?= =?us-ascii?q?1hAdivkliX3CesH/kSibGRH4Au/6/A93f0Lsd5jX3B0f9y3BEdXsJTODj+1e?= =?us-ascii?q?ZE/A/JCtuRyR/Lnru2dakawC/G/XuCymzLpkxDTQpsSvqaD20HbEeP/Mzwvx?= =?us-ascii?q?qEQrKrErthNwJAzYiHK68ZItHqjFATXP74I5yeeGO+nW6sGAyFjq2Bdovkem?= =?us-ascii?q?gRnW3dBUEInhpV/COuOg03ByPnqGXbAQ=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DVAAABwQRbly0bGNZcHQEBBQELAYN?= =?us-ascii?q?AgWIoi3pfjBaDCJM2gXgLLIRAAoIhITQYAQIBAQEBAQECARMBAQEBAQYYBks?= =?us-ascii?q?MgjUiglIDAycZARsdAQMMBhA7IQIRAQUBHAcSgyKBaAEDFQOeYDyMbhYFARe?= =?us-ascii?q?CcAV/BAGCSAoZJg1UV4F0AgYShyd8gVQ/gQ+FXId4Aoc9kGYsBwKBZ4lxgnQ?= =?us-ascii?q?Lh1OFK4oqhikCBAIEBQIFDyGBBByCCnCBAYISghQLAQ4Jg0WKHFJTeSuNGgE?= =?us-ascii?q?B?= X-IPAS-Result: =?us-ascii?q?A0DVAAABwQRbly0bGNZcHQEBBQELAYNAgWIoi3pfjBaDC?= =?us-ascii?q?JM2gXgLLIRAAoIhITQYAQIBAQEBAQECARMBAQEBAQYYBksMgjUiglIDAycZA?= =?us-ascii?q?RsdAQMMBhA7IQIRAQUBHAcSgyKBaAEDFQOeYDyMbhYFAReCcAV/BAGCSAoZJ?= =?us-ascii?q?g1UV4F0AgYShyd8gVQ/gQ+FXId4Aoc9kGYsBwKBZ4lxgnQLh1OFK4oqhikCB?= =?us-ascii?q?AIEBQIFDyGBBByCCnCBAYISghQLAQ4Jg0WKHFJTeSuNGgEB?= X-IronPort-AV: E=Sophos;i="5.49,431,1520899200"; d="scan'208";a="13646273" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from updc3cpa06.eemsg.mail.mil ([214.24.27.45]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 23 May 2018 01:18:50 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;aa4128e1-d708-411a-b2d7-5281a1b1634b Received: from localhost.localdomain (localhost [127.0.0.1]) by UPDCF3IC05.oob.disa.mil (Postfix) with SMTP id 40rF5j5ncVzrKYY for ; Wed, 23 May 2018 01:18:49 +0000 (UTC) Received: from UPBD19PA11.eemsg.mil (unknown [192.168.18.17]) by UPDCF3IC05.oob.disa.mil (Postfix) with ESMTP id 40rF5j2z4SzrKYV for ; Wed, 23 May 2018 01:18:49 +0000 (UTC) Authentication-Results: upbd19pa11.eemsg.mail.mil; dkim=pass (signature verified) header.i=@gmail.com X-EEMSG-check-008: 136293311|UPBD19PA11_EEMSG_MP11.csd.disa.mil X-EEMSG-SBRS: 2.7 X-EEMSG-ORIG-IP: 209.85.220.195 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DTAAAevgRbf8PcVdFcHQEBBQELAYVKi3pfjBaDCJM2gXgLLIRAAoIhITQYAQIBAQEBAQECFAEBCQsLCCYlDIUpAwMnGQEbHQEDDAYQOyECEQEFARwHEoMigWgBAxWeZjyMbhYFAReCcAV/BAGCSAoZJg1UV4F0AgYJAQiHJ3yBVD+BD4Vch3gChz2QZiwHAoFniXGCdAuHU4UriiqGKQIEAgQFAgUPIYEEHIIKcIEBghKCFAsBF4NFihxSU3krjRoBAQ X-IPAS-Result: A0DTAAAevgRbf8PcVdFcHQEBBQELAYVKi3pfjBaDCJM2gXgLLIRAAoIhITQYAQIBAQEBAQECFAEBCQsLCCYlDIUpAwMnGQEbHQEDDAYQOyECEQEFARwHEoMigWgBAxWeZjyMbhYFAReCcAV/BAGCSAoZJg1UV4F0AgYJAQiHJ3yBVD+BD4Vch3gChz2QZiwHAoFniXGCdAuHU4UriiqGKQIEAgQFAgUPIYEEHIIKcIEBghKCFAsBF4NFihxSU3krjRoBAQ Received: from mail-qk0-f195.google.com ([209.85.220.195]) by upbd19pa11.eemsg.mail.mil with ESMTP; 23 May 2018 01:18:48 +0000 Received: by mail-qk0-f195.google.com with SMTP id n207-v6so3558342qke.3 for ; Tue, 22 May 2018 18:18:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=UaCf/IOnCDhTGRoAMSw1i3LiFrYD3u7d/3bKu7DVZTQ=; b=WfI0Cq2NZvH9FFSI9SgTq/6vG2ommch65tBug0OEd/bKpSAwGFiG10waxrCsIaJ/Ko xDztRyJ4MsBqpSqRnfZdmz1oJpleNDP/LGIG/4T3Q3hUKr6bMG9E6Vgv4OJhk5He37BK aa1gR7qA8gHpvolcnq6lYrfXlyUe4HN9Gq6s1m0IOVMvL+kuYLPFODYBhM3tNTbyNEHu 5i6yGCRq7goaGAm9EK3ETWYjihwSUBNVbUZ9ldiTaqmWOsaHWgsgtRG7jdLlu1deNu13 uYESu0LABr2Pytg145n9sDwtHWFSiueN4nmgR2tUppMH01IYv9cBlA8kQDZMHo5cP9Jn VkJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=UaCf/IOnCDhTGRoAMSw1i3LiFrYD3u7d/3bKu7DVZTQ=; b=FRKe+cr3/FEOqrhaA4RGM/lcD7rT95dnDA3QeC0hppqH7iIdS5O8niUS6pYY5BIRB+ +unoG7Nt2b8ihUoe+XEXyCpCe7zQZpc8IXZCWLZeOsJiTgKOsXSJTyStGwuYJAoRkgH4 hA/ILrirRcB9SyeX5bfP0yBsW0ZHBnk/cDl8t9IkOMJ4IGpR4WCgq+Z386qMLv7wOxSB CrpJXqH4nICYeup1gA7BSgnMcTa7/ax54amQmKUsLVGVu68lguuqXoBBiEKY7mOO9lrb rzRjNyDdiZkF9WNfYUdoQFyV6wqjDQFDGeQTjFfDlH4ZftmDazWUkFcMI7B/swnY5KZg EC9g== X-Gm-Message-State: ALKqPwdLPqNoUAYSdaS1gDQ2uZOjSK3O0Gn++dUjLG54S2vfb3Q8wtIW +37fXwREw508KAaqrUmXag== X-Google-Smtp-Source: ADUXVKJZ/4R9u2jcWUL+TjvgEkXS74lE9H3InRYLFlCCSrPnuPFDL8VD8BvioxRVl6juGzzPCM6vsg== X-Received: by 2002:a37:1214:: with SMTP id c20-v6mr101804qkh.248.1527038327707; Tue, 22 May 2018 18:18:47 -0700 (PDT) Received: from localhost.localdomain (c-71-234-172-214.hsd1.vt.comcast.net. [71.234.172.214]) by smtp.gmail.com with ESMTPSA id s127-v6sm12604251qkf.21.2018.05.22.18.18.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 May 2018 18:18:46 -0700 (PDT) X-EEMSG-check-009: 444-444 From: Kent Overstreet To: linux-kernel@vger.kernel.org, viro@zeniv.linux.org.uk, akpm@linux-foundation.org, willy@infradead.org, gregkh@linuxfoundation.org, linux-security-module@vger.kernel.org, selinux@tycho.nsa.gov, dev@openvswitch.org, shli@kernel.org, linux-raid@vger.kernel.org Date: Tue, 22 May 2018 21:18:19 -0400 Message-Id: <20180523011821.12165-4-kent.overstreet@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180523011821.12165-1-kent.overstreet@gmail.com> References: <20180523011821.12165-1-kent.overstreet@gmail.com> X-Mailman-Approved-At: Wed, 23 May 2018 08:03:44 -0400 Subject: [PATCH 4/6] openvswitch: convert to genradix 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: Cc: Kent Overstreet MIME-Version: 1.0 Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP the new generic radix trees have a simpler API and implementation, and no limitations on number of elements, so all flex_array users are being converted Signed-off-by: Kent Overstreet --- net/openvswitch/flow.h | 1 - net/openvswitch/flow_netlink.h | 1 - net/openvswitch/flow_table.c | 45 ++++++++++------------------------ net/openvswitch/flow_table.h | 4 +-- 4 files changed, 15 insertions(+), 36 deletions(-) diff --git a/net/openvswitch/flow.h b/net/openvswitch/flow.h index c670dd24b8..4f06278166 100644 --- a/net/openvswitch/flow.h +++ b/net/openvswitch/flow.h @@ -30,7 +30,6 @@ #include #include #include -#include #include #include #include diff --git a/net/openvswitch/flow_netlink.h b/net/openvswitch/flow_netlink.h index 6657606b2b..66f9553758 100644 --- a/net/openvswitch/flow_netlink.h +++ b/net/openvswitch/flow_netlink.h @@ -30,7 +30,6 @@ #include #include #include -#include #include #include diff --git a/net/openvswitch/flow_table.c b/net/openvswitch/flow_table.c index 80ea2a7185..284f44d832 100644 --- a/net/openvswitch/flow_table.c +++ b/net/openvswitch/flow_table.c @@ -111,27 +111,19 @@ int ovs_flow_tbl_count(const struct flow_table *table) return table->count; } -static struct flex_array *alloc_buckets(unsigned int n_buckets) +static int alloc_buckets(struct table_instance *ti, unsigned int n_buckets) { - struct flex_array *buckets; - int i, err; + int i; - buckets = flex_array_alloc(sizeof(struct hlist_head), - n_buckets, GFP_KERNEL); - if (!buckets) - return NULL; + genradix_init(&ti->buckets); - err = flex_array_prealloc(buckets, 0, n_buckets, GFP_KERNEL); - if (err) { - flex_array_free(buckets); - return NULL; - } + if (genradix_prealloc(&ti->buckets, n_buckets, GFP_KERNEL)) + return -ENOMEM; for (i = 0; i < n_buckets; i++) - INIT_HLIST_HEAD((struct hlist_head *) - flex_array_get(buckets, i)); + INIT_HLIST_HEAD(genradix_ptr(&ti->buckets, i)); - return buckets; + return 0; } static void flow_free(struct sw_flow *flow) @@ -168,15 +160,9 @@ void ovs_flow_free(struct sw_flow *flow, bool deferred) flow_free(flow); } -static void free_buckets(struct flex_array *buckets) -{ - flex_array_free(buckets); -} - - static void __table_instance_destroy(struct table_instance *ti) { - free_buckets(ti->buckets); + genradix_free(&ti->buckets); kfree(ti); } @@ -187,9 +173,7 @@ static struct table_instance *table_instance_alloc(int new_size) if (!ti) return NULL; - ti->buckets = alloc_buckets(new_size); - - if (!ti->buckets) { + if (alloc_buckets(ti, new_size)) { kfree(ti); return NULL; } @@ -249,7 +233,7 @@ static void table_instance_destroy(struct table_instance *ti, for (i = 0; i < ti->n_buckets; i++) { struct sw_flow *flow; - struct hlist_head *head = flex_array_get(ti->buckets, i); + struct hlist_head *head = genradix_ptr(&ti->buckets, i); struct hlist_node *n; int ver = ti->node_ver; int ufid_ver = ufid_ti->node_ver; @@ -294,7 +278,7 @@ struct sw_flow *ovs_flow_tbl_dump_next(struct table_instance *ti, ver = ti->node_ver; while (*bucket < ti->n_buckets) { i = 0; - head = flex_array_get(ti->buckets, *bucket); + head = genradix_ptr(&ti->buckets, *bucket); hlist_for_each_entry_rcu(flow, head, flow_table.node[ver]) { if (i < *last) { i++; @@ -313,8 +297,7 @@ struct sw_flow *ovs_flow_tbl_dump_next(struct table_instance *ti, static struct hlist_head *find_bucket(struct table_instance *ti, u32 hash) { hash = jhash_1word(hash, ti->hash_seed); - return flex_array_get(ti->buckets, - (hash & (ti->n_buckets - 1))); + return genradix_ptr(&ti->buckets, hash & (ti->n_buckets - 1)); } static void table_instance_insert(struct table_instance *ti, @@ -347,9 +330,7 @@ static void flow_table_copy_flows(struct table_instance *old, /* Insert in new table. */ for (i = 0; i < old->n_buckets; i++) { struct sw_flow *flow; - struct hlist_head *head; - - head = flex_array_get(old->buckets, i); + struct hlist_head *head = genradix_ptr(&old->buckets, i); if (ufid) hlist_for_each_entry(flow, head, diff --git a/net/openvswitch/flow_table.h b/net/openvswitch/flow_table.h index 2dd9900f53..57fe93570a 100644 --- a/net/openvswitch/flow_table.h +++ b/net/openvswitch/flow_table.h @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include @@ -37,7 +37,7 @@ #include "flow.h" struct table_instance { - struct flex_array *buckets; + GENRADIX(struct hlist_head) buckets; unsigned int n_buckets; struct rcu_head rcu; int node_ver;