From patchwork Tue Nov 22 19:40:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Jurgens X-Patchwork-Id: 9442035 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 8C603605EE for ; Tue, 22 Nov 2016 19:43:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 776DB1FF0B for ; Tue, 22 Nov 2016 19:43:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 68CC61FF13; Tue, 22 Nov 2016 19:43:55 +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, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from emsm-gh1-uea11.nsa.gov (emsm-gh1-uea11.nsa.gov [8.44.101.9]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8CB211FF0B for ; Tue, 22 Nov 2016 19:43:54 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.31,682,1473120000"; d="scan'208";a="995831" IronPort-PHdr: =?us-ascii?q?9a23=3A/OGuaxzY7RkZNhzXCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?1e4RIvad9pjvdHbS+e9qxAeQG96KsLQe1qGP6f+ocFdDyK7JiGoFfp1IWk1Nou?= =?us-ascii?q?QttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZr?= =?us-ascii?q?KeTpAI7SiNm82/yv95HJbQhFgDSwbalsIBi2ogndq9cajIl/Iast1xXFpWdFdf?= =?us-ascii?q?5Lzm1yP1KTmBj85sa0/JF99ilbpuws+c1dX6jkZqo0VbNXAigoPGAz/83rqALM?= =?us-ascii?q?TRCT6XsGU2UZiQRHDg7Y5xznRJjxsy/6tu1g2CmGOMD9UL45VSi+46ptVRTnhj?= =?us-ascii?q?0HNzok+2/JjMJ+gr9QrBa4qxBi34LYZYeYP+d8cKzAZ9MXXWpPUNhMWSJPAY2y?= =?us-ascii?q?aIkAD+QZPetasoXwqVQBogexCwayH+Pi0SNIi33s0KEmyektDR/K0Qo9FNwOqn?= =?us-ascii?q?TUq9D1Ob8cX++vyqnD0DHNb+5M2Tfy9ofIdAshquyLUL1ta8XRz0gvGB3BjlWS?= =?us-ascii?q?soHlOi2a1uAJs2eB6epgUu2uh3Q7pAF2pzii38EhgZTKiIIN0l3I6Cp0zYkvKd?= =?us-ascii?q?C4VUJ3e8CoHZROuy2AKod6Wt4uTmVmtSogxbALu4S3cDULxZkn3RLTduKLfoyO?= =?us-ascii?q?7xn+TuieOy14i2hgeL+nghay9lWvxfPkW8mv1VZKsjJFkt7RtnARzxDT6taISv?= =?us-ascii?q?96/kq5xTaAzRrT6uBZIUAvj6bbN54gzaIwlpoUq0jDGDP5mF7qg6OMc0Uk++yo?= =?us-ascii?q?5/zmYrXguJCcK5d5hhzxP6khgMCyAfk0PhIQU2WU5+iwzqDv8VX8QLpQj/02lq?= =?us-ascii?q?fZsIrdJcQevqO5GBFa0oIi6xa5Ejen380UkmIALFJYfhKIk5bmO0rVLfDkDfaw?= =?us-ascii?q?n1SskDBxy/DAJb3uGI/BLnfEkLf/Zbp98VJTyBIvzdBD4JJZEr8BIOjpVU/3qN?= =?us-ascii?q?PYDwQ5Phexw+b/CdVxz5geWGyUAqODN6PSq1CI7Po1I+aQfI8VpCr9K/896v7t?= =?us-ascii?q?l3A5mlgdfbSy0JsUcn+4HfNmI1iDbXrrmNcBHn8AvhAiQ+zylF2CTTlTam6oUK?= =?us-ascii?q?0h/DE7CZypDZ3YS4+3nLOB2T23HppMZmBJElqMC2vnd52YW/cQbyKfOs9hnSIA?= =?us-ascii?q?VbilTI8szhWutBLmy7pgK+rb4DcUtZX51Nh6/+fTjw099SRoD8SB1GGAV3p0nm?= =?us-ascii?q?0SRz8xx6B/vVdwykyF0ah/jf1YEMZc5/VTXgc8K5Hc0/RwC8ruVQLZYteJVFGm?= =?us-ascii?q?T82oAD4rStIx38EBY1xmG9i5kBDMwTCqDKQIl7yOHpA09bjc33fpLcZn13nGzL?= =?us-ascii?q?Uhj0UhQsZXKW2pm7Nw9wnJCI7NiEiWi6GqdaEA0yHX72eD0XCCvEdGXw5sSa/F?= =?us-ascii?q?R2wQZlPKrdTl4UPPV7muCbUjMgtF18GCMbBHZcf3glVcQ/fvItPeY3i+m22oHx?= =?us-ascii?q?aH2quMbJb2e2UaxCjSFVILkxwJ8nmYOwg/CTysrH7eDDN0D1Lvf13j8fNkpHO9?= =?us-ascii?q?UEA00xmAb1d92Lqt5h4VmfucRusN3rIFpCghtzJ0HEyn093KC9qAoAxhfKpHbN?= =?us-ascii?q?M54VdH03jWtxZ6PpC6KKBinFEeeRxtv0zyzxV3FplAkc8yoXMuzQpyMr6Y3Epa?= =?us-ascii?q?dzyG2ZDwO7vXKnT9/R20cK7WwlDe0NCX+qgT8/Q0sVPjsx+1FkA66XVoz8FV02?= =?us-ascii?q?eA5pXNFAcSS5XxUkIz9xdkvbHVfi495o3P2H13LKm7riTC18guBOs/xRaqZ81f?= =?us-ascii?q?P7+cFA/uD80aANCjKPQwlFi0ahIIJvpd+LQvMMOhc/uGxKmrPOB7kTKjkWhH5o?= =?us-ascii?q?d93V6W+yp6VOHIw44Pw+uE0QufSzf8kFChv9jymYBAfD0dAGy/xDP6BIFPYq1y?= =?us-ascii?q?eZgECX20L82x2Np+m4bnW2RE+167G1MGxMipdAKRb1Pj2w1Qzl8aoX+5liu+1D?= =?us-ascii?q?x0lS8mrraF0CzJ2eTiewINOnRXS2l6kVfsPY+0gsgEXEiucgckjwWl5UDnyKhb?= =?us-ascii?q?vqh/KXfcQVtQdSjsM25iSrewtqaFY8NX8JMnqzhXUOCnbF+GS779vxsb3zrtH2?= =?us-ascii?q?REwjA3bTaquo/2nxZikmKSMG5zrGbFecF33Rrf/MbTReNV3jUYXCl3kz/XBkSi?= =?us-ascii?q?MNmz5tiUiozDvf6kV2K6TJFTai7rzZ6atCSn+2JqDxq/n+q8mtL5CwQ61zH018?= =?us-ascii?q?VyXyXSsBn8epXr17i9Me9/cElnHln869Z9GoF7iYYwio8f1mUdhpWP53UHiX3z?= =?us-ascii?q?MdJZ2a3gcHUNWSQHw9nP4AjqwEdjNG6Gx5rlVnWBxctsf9a6YmMK1SIn78FKEL?= =?us-ascii?q?uU7LtfkCtzvFW4sRnRbuRnkTcF1/Qi8ngajP8VuAA11CWSHqgSHVVEPSzrjxmI?= =?us-ascii?q?6sqxrKFTZGmxbbiwyFBxksq6AbGEvA5cRG35dYs4Ei9o8MpzKlTM32Pv6ov8Yt?= =?us-ascii?q?nfccoTtgGIkxfHl+VVMog9l/QQiSpiI239uXolyu4ggBN0wZ66uZKLK2J3/KK2?= =?us-ascii?q?GhRYLCH6Z9sP+jHxiqZThsCW35q1EZV5AjUGR5XoTfOyEDIJqfTnOQeOEDsmpX?= =?us-ascii?q?edBbXfHBWQ6EN8o3LICZCrOGmdJGMFwtV6WBmdOEtfjRgMXDokhZE2CAaqxM39?= =?us-ascii?q?cEd+/T0R50D3pQVSxe5yMBn/SGjfrh+yajgoUJifMAZW7gZa6kjOKsOS6eZzHy?= =?us-ascii?q?BD/p29twyBMHebaBpUAm0TQUyLGVTjPrio5dnd/OmVHfaxLvvUYbWTsuxSTfmJ?= =?us-ascii?q?yoiz0ot9+DaMMN+DPn54D/00wkBDR2x2G9zFmzUTTCwajznNYNSFpBim9S14sN?= =?us-ascii?q?u//e/wWA31+4uAEbRSPst0+xysh6eMKfKQjj5jKTlEzpMM2WPIyL8H0VEJiiFu?= =?us-ascii?q?eD6tEbIbuCHQUq3fga5XAAQday9pM8tI9a081BFXOcHHktP1yqJ4jvktBlhfWl?= =?us-ascii?q?zugN+patIRLmG6LFPIGkCLNLGcKj3Kx8H4eqS8SLJKgOVTrR2wti6RE1X/MTSb?= =?us-ascii?q?iznpSxevPPlQjCGcORxSopu9chFsCGf9StLpcQe7MNhpgj012rA7mnTKNWsAPj?= =?us-ascii?q?dmaENNsqec7SVGjfVjA2ZB9GZqLfGYmyaF6OnVMpUWsPtvAitqjO9a5XM6y7Vb?= =?us-ascii?q?7C5aWPx1hCvSrtlro164iOWPzCRoUAZWoDZRmI2LpVliObne9pRYWHbE+g4N4n?= =?us-ascii?q?uUCxsUottqFMHvu7pQy9XUk6LzMClN89TR/cQGBsjULNmIMH0uMBbzHz7UFgQF?= =?us-ascii?q?RyaxNW7Dn0xdjO2S9nqNo5g8tJfjgp4OR6RYVFwyDfMaFl5qHNoZIJd0XzMoi7?= =?us-ascii?q?ibg9AU5XCmthneWN1avozbVvKVGfjvMiiWjaJaaBQS27P3MYQTO5bg1ExjcFl1?= =?us-ascii?q?gYPKG0TIXdBXvCJgbhU4oENT/3hiVmczwV7qahux4H8PEv65hgM5igx4YeQr6T?= =?us-ascii?q?jj/VM3JlvRqSQqjkYxg9LljSqWcD7rI6e6RZtWBDbst0gtLpP7RB54YhCokkx6?= =?us-ascii?q?NTfLWqlRgqB6emBxkg/cvpVOGeVCQqJYfR8Q3/CXZ+ko0FhGrCWo21NH7/PfCZ?= =?us-ascii?q?R+jAsqbYKsr3VY1g1+d946O7bfJKVTzldKmKKDpTSo2foywA8DPUYC6nmeeCoV?= =?us-ascii?q?uEwOLLYmPTOk/vBr6QyBmzpDf3IAV/w0rfJ27kk9IfiPzzr8075fLUC8L+KfL7?= =?us-ascii?q?mHtGfdjs6HWFUw1l8Pl0le5rV5y9ssc0+OW0Ao1ruRGAwDNdDeJgFNc8pS6H/T?= =?us-ascii?q?cD6KseXK25J6IYO9F+HvTeKVu6YUhF+kEBwuH4QW4cQLBoOs313ALcf7ML4Fzg?= =?us-ascii?q?0g5B/1K1WBDfRJfg+LkTgcrs6jy5932JVSKSsGAWVhKym34KjYphMyivqZQNg2?= =?us-ascii?q?emsaXpcDNn8uW826gS5YsG5GDDmr0uIU0weC7zjkpivMFjX8acRsZOuMbxN2FN?= =?us-ascii?q?624Sk/87SxiVPP7pXeJmT6NdN+ut/P6eIXvIuIC/JUTLZnqEjQgY9YSGK2U2TX?= =?us-ascii?q?C966O4Dwa5UwbdzzEnu6Ulu/hCw7T8jvJtagNamIjh/2SolKqoWb2yojNcClHD?= =?us-ascii?q?EEBxhwv/0D5L57ZQAbeZU7ZR/ouBggOKOnJQeZ0tOuQ2GrKTRMVPRQ1uS6aKZR?= =?us-ascii?q?zyY1YO+61WEsTpckwOmr6UQNXo0FjgnCxfa/YIlTSTP8FWJbewjUvyU2inZhOf?= =?us-ascii?q?gowuck2hzIq1kdPyqMdOxzZ2xOp8s8Ck+KIXVqFmo4QEeRjYXe4g6t27AS+zVS?= =?us-ascii?q?n9NP3OJYrnfxpZ7fbyiqWKCxrpXVqSUgZ8A8o6JtKYzjPteGtJTGkzzFSpnQsx?= =?us-ascii?q?GKUC69F/pegdheODtWTuRSl2w5PsILopZO6U00VsgiPbNPE7UsqqqsaTV6ES4Y?= =?us-ascii?q?1TUZWJ+Y3Dwenue83KPXlg2Nf5s/KxEEv5BCg9QHXy5wfCweuLepV5/KmG+cVm?= =?us-ascii?q?gLPAAT4BxQ6wICjIB/Yvvo75bPTJ9Izz5Woux7UjHXFpZ261T7SnuagV/iSPWu?= =?us-ascii?q?i+apxx5dzOrw0tkHXx5yEVJdyPxMlksvM756MLUQvpTQvT+Wa0z6uGPtyO2pJF?= =?us-ascii?q?lVyM3UeF34DJbLtWXmSC0c/GcYRYlRx3HDDZ4SiRZ2aL43pFVQJ4CrYkb/6CY/?= =?us-ascii?q?x4tzGrm4VMaryk0krXYaXSiqCMZOBPt8vFLRRjJlf4ihqI/5NJVKXm9Q5Jqdpk?= =?us-ascii?q?9XkUl3LyG5yZtcK8RM4jEWXzhCujSds8WsR8Jdw8N2CIUMIthnsXfnBKxEIISR?= =?us-ascii?q?o2ExurH30HDZ4S08sFGgyDWwAKK4TuNZ/2wCGgoyPWierFcgD/c0+GfI7l/Nqk?= =?us-ascii?q?x0//tcBrWXgkVxuixyHpZSBjtS1HClKFpyTH9as+VaNqvVcspcQ+Usah+1IRA+?= =?us-ascii?q?E+Ap31CR90FugXj5ezBythdd+y3FQwk0UiwVj6zxmTECr8GoIiUWS5RWYjU9dy?= =?us-ascii?q?3FMR6UmThLvBZDbEFnQ5AZDcxf+74B2Ytb49HPRluyJiEdRBxtKAY43uRFlUJZ?= =?us-ascii?q?t0WYYy/dBxKydfnTqh13YduRrMmxIfT7+wdIlJjqv/0m+KUYWXKmgxGtTs7DoI?= =?us-ascii?q?PmsN2FqFeOfr/iM+KgeX/BUCTMjReoiLg/AZnF4zTfPQhGJ5R00ncrfZ/hCWvX?= =?us-ascii?q?MhtcPKIbO1BXVaZkZtVauupafdNreL4V+a9xARKKXgnvF5Kyo/lGNFnTWS/TLy?= =?us-ascii?q?GG8uyhv43f86DSSe/9acOS3XrHRbx4Poti4znhB7jqyZNe+lbx2vp17kN6UkTG?= =?us-ascii?q?PDqco9T9PQ4L/86idlb4vpI1AzzWBotwkGD3yUFEbcYXRDeq8JsAwpND9HnwUf?= =?us-ascii?q?540lT0sOBK67lk85c47K50xsqvOKfSLehasVV9DRiKBwVq8ZEtD3ZjR2xLZe8R?= =?us-ascii?q?MvjRd7wDjc/ys+D3C7AX6BqN9uNEb9vIPVrMldS5Cj6GUxBEmx0BqTECJAuGy/?= =?us-ascii?q?GFg7N0SdqipeXh2EIi+UK+LhkdzLBp/4iE5LGFpOrKbxvV0bgEW7TlRsLpobQq?= =?us-ascii?q?oEOe//oklKQBemZteQ2oDPAdVtIBxmfn1a0qzzgjE8XNH7L6//5MSmw2kyn8m5?= =?us-ascii?q?9nGVUWAfQUEaCN/YtAgmcyg/bZOcEOcqBehmaPEgapErkGyXOw6iuXJmxljgvP?= =?us-ascii?q?0xH2T2Oz9kX5rTRkQSvW0tfsjlZVVqStBUhMRSapPlV4sDyXNgryqNX3obg17F?= =?us-ascii?q?0xMmH8stKNlXeuOLRTH8LlP9yQOyg0pFUQjJ0qXdyiwoUbFNWyIdsL93F+dPTe?= =?us-ascii?q?4XuxkyBdu6dHm5be4saN9/rLB3agi7OVq66RxDFYzXg1pko/5cyhNv7Q4d2KX/?= =?us-ascii?q?Wo2HwLQyd5pQTBQwa/qqbHoFAMJUyLzEDLlZQOPtFC2Hk11lrr5OY9T90u8wVe?= =?us-ascii?q?DJzPZ+sYpTD0Ojv730qQY84tWimZyTtXEUr/EUNkF6gkxGLwoMXJmG/V+10sWI?= =?us-ascii?q?ZwckvnigJzD4gjJkIi9l8XwjEbEQcXdRCbDaunBUDkLYsCSUgMdxCH3Ly7eqc4?= =?us-ascii?q?w0JzxK+g6/HJYex6GaUNKu5XjhSSk1hDBpIWraoeTap+e19c8a7avQ3iBJbnXv?= =?us-ascii?q?f4j3owNPu1Qs9A/cAfqXQi/h61RwC85pdb87YblJeIe7ZFYZnNps9z9Vto6CUU?= =?us-ascii?q?diNTnBhwkQ+2XfobpOD57djRqICo5fq2VKYxW+UX8AA5CH9/j5vrjlEsu9PX1+?= =?us-ascii?q?ZASo3Nk4v/7QRNLmWWt4bdzhZzN/ABK5+xfLZn7XUIPTISJ3UUPdqZc/M8+TNi?= =?us-ascii?q?MC3P51xeBcMBfcsYM9DRmQ9Iik3oVrZT9tDYGlOBEId8acQo72vxyDAo/poxSf?= =?us-ascii?q?7g5yWqJZ/D71FMMfRDjD9vlN7Yp+ga3+DSCC4J7nmdcRR1xTmCy5aVAfbq4eqM?= =?us-ascii?q?0M3UV08BHiMuT4ddPiSN+Qi9SeqziprkSR6b6s78gJI/aEKfXGexk74fsqZRC+?= =?us-ascii?q?JAjDv03iRGHIDvm/2Vq8as6HdQtlBfH4Z89wfFF7tDPpV7Ihn4ksirRlRiCSv/?= =?us-ascii?q?Ys7UawEutPCQxugS/+V0L1H+apMDIhIY17L67mJYTgRwR77wolaZWuURaNx9SP?= =?us-ascii?q?zaqnBV6IRgK7IAPVWGoJzlsC1IqVAsDwMzbr8/sCBafFHUnAJJQ6b0pKIAigwE?= =?us-ascii?q?XN58vk9MH36wOG0g6DfcUKRVjbOeCPoL/TWPQK0OVF9oMiBlQx+v3pVhZaepl+?= =?us-ascii?q?hdsmxahiN9vOQq0zt+SRuzpSLsvLkN1Ss99r+3sjsBuHpFTviRkirTBlVDye4F?= =?us-ascii?q?jaECBHr47ly8enYDZpPo4LZ7PcTg6ZUh43MnbBUheC0GXeKgBzvsgKOIBoyPrc?= =?us-ascii?q?9ThR+MuMXIdr+zLikSO68jyRLiWXhyyAzekwtp8GcRRDWv8sMkLp2nOck53iqo?= =?us-ascii?q?BXTbdFEU76NIrsv+r1gLQfAyaVN83Wpj08+HRjYXSMzIAWY1gRAuaX9Yf5Jb9R?= =?us-ascii?q?8aC64ojy6KvqZY8AEUbjPUH5+r+4bKm8fHx2U9Qc1sxm3Iuq2Pnokq32F9m9No?= =?us-ascii?q?8i6Ov2wfd+PcU89rDHn8yINfyejlavW2teAHTopmx6i7XP8ELMaj5XO82I92VU?= =?us-ascii?q?+92rQeA125PfcBxrfbUyalUWqYWeCKc2iQgTk0KUvy5Ri0Ll0tdshGtUg9MvHN?= =?us-ascii?q?hpREjQ3uTat0RjmMpV/c1GEjLeIadwcttYe7egwFUO0RaPaYJeQ0xv0xFkcMZW?= =?us-ascii?q?fTHSRqE++2rUKtnI9jNnVl4EX6Yuft8gf9PduQABYEEonarphv9vy8XG6BP2Fv?= =?us-ascii?q?zAFqNklu6+jfD0gxtvNbc5uJhtffmdJ70fIeevd2NS09vcITmp596YaKzciGax?= =?us-ascii?q?bRzoz9JdvNuPiXH+Xfz1g2emFdSrcZeQT154EgMd4jVbzTGr9ZvRoHCKg/R5wh?= =?us-ascii?q?MHzx+79oIwNpdQ7Rf6+0gsjspuKEfJdUoGXW7l0oJifGpxID0uC0TRB8b52yiX?= =?us-ascii?q?X9PpQwRjNZr9JzERZnHYpPG8YFrwW5GZ6UnL+0h8W2+0NgtO8AqbDwBezS1NSl?= =?us-ascii?q?w4VxWIBX5UyXPDbRA6lrh15qjv+pj/fF05nxFdnids0eWOh8WG7FZafMHp+jJT?= =?us-ascii?q?KWJsL8Z0lG/qaS0bJhSBWRZTz2ULSduS2hNfVk/V87xZJicOrU1jwt4KnR2MHu?= =?us-ascii?q?aGFDuiejsXmJOYNY7FzOG+PTRApUSf6f/2Z+Aa0XbJf79PsUMdM83teQ+Q9z4y?= =?us-ascii?q?pe0MGdOaiuslfM2l5ndZLcNEbp3yc5WY8XIBWwKEcshW7Zqm/BAXRHNcWkKNNi?= =?us-ascii?q?gNCSDhD34Elxg24tbHZbGmX0XdeRJXQb28WmaQ2R6g1LC9cDn+iqeU83saG8Rv?= =?us-ascii?q?VoOpVbluWwqroHicxmJjrMRMdEJSHQKqF5Pj5KAeXSq1gkeBkEs6I6Wo0tf5iB?= =?us-ascii?q?PFsHMFucySP11QbC1Uz0d8ew1KuSIScW63NHwKjf3ThKuQa5pe6Tgtf/X7DBcJ?= =?us-ascii?q?H2QPnSPTIgVj6AWTsyEUep+VGju/cfovqYIGEfrU4QYiKTDg4Tu69uocLXDm/J?= =?us-ascii?q?lu1pZIcKi+yCWyDsVC14k7I/BiRRukCPRPoMDhLbb2LngGpAuAyiIeJM/X3lb7?= =?us-ascii?q?2E3KZVXfIZApdUeP2DX9TYYexeJysvljgBN+azZcbTr6w40l3WSWsUCLfI9FmE?= =?us-ascii?q?Q06NQ/yc2ijnXYMLsIgooiAo4M7fnjdrE6TUOLaSvzyu8ou/jCaCo+3eV3Itbl?= =?us-ascii?q?czgO0YBWmO3hhAJHsDC9EPt0HnWrSAaFpU1HI1leJu3AcBdxpxUn1p0n1Wmu29?= =?us-ascii?q?GspfSVMPg2OuWuAGbE5pAzMq50OK5BP9YcAYs8DJW2Be7qcMSZYaLPQw84nXNq?= =?us-ascii?q?4Qz+oo0T9luyE6rTuSD0lcjgOE9KrQGrhwxrtc6mkk5/t2RF2AQyvDcmjbzYqr?= =?us-ascii?q?E8BPxSBooXDgzMfUu/5iO6ZUp4F+GlcFHTx5Ksrb/T9fTWGnkDe16h27BjWFPx?= =?us-ascii?q?oC5ysQYDcCcqBy1eA/+A7Ba9Lp8UqNs+ckr0yxBECADb/wkIdHEen1xA64bm9N?= =?us-ascii?q?ajztGJdo7r5AjN8IYLgPfYGkAkvZKgH1A0SfoS9IvBTur7ilCtBG6n8TnqUlNJ?= =?us-ascii?q?fiWIxORcLU1Tc+w3tG2IsnzGuND9eZbZr8r4R4DHVILJ6mRH/wfJXCPB39sfkC?= =?us-ascii?q?1tElEEPBRv8dOTd3uph+tHrwYF6u4s+k8iaLL6y8dxS8NcUKOZKvmy9FhaOXZd?= =?us-ascii?q?Cm3OBLFXdSpft0ssjHr32L723EbA=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2HXBACXnzRY/wHyM5BdHAEBBAEBCgEBFwEBBAEBCgEBgw0?= =?us-ascii?q?BAQEBAR+BWaRZlmwkiCBTAQEBAQEBAQECAQJfKIIzGoIcAgQBAiQTFCALAwMJA?= =?us-ascii?q?QEXCCEICAMBLRURBwcLBRgEiEwEsUg9KgKLJAEBCAEBAQEjjzMRAYV9AQSObIt?= =?us-ascii?q?ikH+KGoYQkXJVXjQegyocgV9whVENFweCEAEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 22 Nov 2016 19:43:52 +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 uAMJhpMS017915; Tue, 22 Nov 2016 14:43:52 -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 uAMJf0Zk031434 for ; Tue, 22 Nov 2016 14:41:00 -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 uAMJeu5U016752 for ; Tue, 22 Nov 2016 14:41:00 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1B4BAC6njRY/4GlL8FdHAEBBAEBCgEBgzgBAQEBAYF4pFmSX4QUhiECgm0BAgEBAQEBAmIohGkCBCdSEBgIMVcHEohxsVE9i1ABAQgCJZVCBY5si2KQf5AqkXJVgRKDSByBXzw0hVErghABAQE X-IPAS-Result: A1B4BAC6njRY/4GlL8FdHAEBBAEBCgEBgzgBAQEBAYF4pFmSX4QUhiECgm0BAgEBAQEBAmIohGkCBCdSEBgIMVcHEohxsVE9i1ABAQgCJZVCBY5si2KQf5AqkXJVgRKDSByBXzw0hVErghABAQE X-IronPort-AV: E=Sophos;i="5.31,682,1473134400"; d="scan'208";a="5839014" 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; 22 Nov 2016 14:40:59 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3Azf4vpB+LoamKPv9uRHKM819IXTAuvvDOBiVQ1KB3?= =?us-ascii?q?1u0cTK2v8tzYMVDF4r011RmSDN6dsa8P0rCN+4nbGkU4qa6bt34DdJEeHzQksu?= =?us-ascii?q?4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPERvjKwV1?= =?us-ascii?q?Ov71GonPhMiryuy+4ZPebgFGiTanf79/LBq6oRjPusQYnIBvNrs/xhzVr3VSZu?= =?us-ascii?q?9Y33loJVWdnxb94se/4ptu+DlOtvwi6sBNT7z0c7w3QrJEAjsmNXs15NDwuhnY?= =?us-ascii?q?UQSP/HocXX4InRdOHgPI8Qv1Xpb1siv9q+p9xCyXNtD4QLwoRTiv6bpgRQT2gy?= =?us-ascii?q?kbKTE27GDXitRxjK1FphKhuwd/yJPQbI2MKfZyYr/RcdYcSGFcXMheSjZBD5u8?= =?us-ascii?q?YYUREuQPM+VWoY7/qFsAthayGRWgCfnzxjJSmnP6was32PkhHwHc2wwgGsoDvn?= =?us-ascii?q?rOo9XzKawcVf21zLPHzTrdafNWwir25Y/VfR87p/GMXKx/cc7TyUQ0EgPKkFGQ?= =?us-ascii?q?qYj/MDOT0eQMvHKX4PZnVeKqkmMqrRx6rDu3xso0l4XEgowYxkrL+Ch72oo5ON?= =?us-ascii?q?y1RU5hbdK5DpddsyeXPJZsTMw4WWFnoiM6x6UGuZGleCgKz4wqxxvBZPyDd4iH?= =?us-ascii?q?+BTjVOGeIDtimH1lf6izhxe28US4y+38UNe70EpSoyZYltTBuGoB2hPR58SdV/?= =?us-ascii?q?dw/0es1SyS2wzN7uxIOUU0mrDaK54lzL4wjJ0TsUHbEyDrgkr2iq6WeVsg+uiq?= =?us-ascii?q?8OnnZ6vpppuYN4BujAH+NasvltajDuQ/NwgCR3Kb9vik1L3/4U35R61HjuYona?= =?us-ascii?q?ndsZDaI9kbp6GiDg9J0ocs9xa/DzC83NQehnkINkhJeB2Aj4j3aBnyJ6XzDe2+?= =?us-ascii?q?mEuEizB23LXdObmnBY/CajDbmarlVa509koZzQ00190Z7JVRTvkaLOnbRl76tN?= =?us-ascii?q?ueCAQwdQOz3aKvBc10zIIFcXqGGK6CKKfbulLO4fggZ6GAYIIZtjHnJ9A/6vLu?= =?us-ascii?q?hGN/klgYOeGy0JIRLnC1EOh3C0SffXfoxNwGFCNCvgM6Cvbtk1CESiJUbHWaUK?= =?us-ascii?q?c15zV9A4WjXqnZQYX4rLWHlAWmBJJbYHsOXlyFF3blc4esXvoIbCuUJd8nmTsB?= =?us-ascii?q?A+vyA7Q93A2j4Vepg4FsKfDZr2hB7cru?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0F4BAA+njRY/4GlL8FdHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBgw0BAQEBAYF4pFmSX4QUhiECgm0BAQEBAQEBAQIBAl8ogjMaAYI?= =?us-ascii?q?bAgQnUhAYCDFXBxKIcbFQPYtQAQEIAiWVQgWObItikH+QKpFyVYESg0gcgV88N?= =?us-ascii?q?IVRK4IQAQEB?= X-IPAS-Result: =?us-ascii?q?A0F4BAA+njRY/4GlL8FdHAEBBAEBCgEBFwEBBAEBCgEBgw0?= =?us-ascii?q?BAQEBAYF4pFmSX4QUhiECgm0BAQEBAQEBAQIBAl8ogjMaAYIbAgQnUhAYCDFXB?= =?us-ascii?q?xKIcbFQPYtQAQEIAiWVQgWObItikH+QKpFyVYESg0gcgV88NIVRK4IQAQEB?= X-IronPort-AV: E=Sophos;i="5.31,682,1473120000"; d="scan'208";a="995698" Received: from mail-il-dmz.mellanox.com (HELO mellanox.co.il) ([193.47.165.129]) by emsm-gh1-uea11.nsa.gov with ESMTP; 22 Nov 2016 19:40:57 +0000 Received: from Internal Mail-Server by MTLPINE1 (envelope-from danielj@mellanox.com) with ESMTPS (AES256-SHA encrypted); 22 Nov 2016 21:40:55 +0200 Received: from x-vnc01.mtx.labs.mlnx. (x-vnc01.mtx.labs.mlnx [10.12.150.16]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id uAMJenMV005134; Tue, 22 Nov 2016 21:40:52 +0200 From: Dan Jurgens To: chrisw@sous-sol.org, paul@paul-moore.com, sds@tycho.nsa.gov, eparis@parisplace.org, dledford@redhat.com, sean.hefty@intel.com, hal.rosenstock@gmail.com Subject: [PATCH v5 1/9] IB/core: IB cache enhancements to support Infiniband security Date: Tue, 22 Nov 2016 21:40:30 +0200 Message-Id: <1479843638-67136-2-git-send-email-danielj@mellanox.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1479843638-67136-1-git-send-email-danielj@mellanox.com> References: <1479843638-67136-1-git-send-email-danielj@mellanox.com> X-Mailman-Approved-At: Tue, 22 Nov 2016 14:41:47 -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: linux-rdma@vger.kernel.org, linux-security-module@vger.kernel.org, selinux@tycho.nsa.gov MIME-Version: 1.0 Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP From: Daniel Jurgens Cache the subnet prefix and add a function to access it. Enforcing security requires frequent queries of the subnet prefix and the pkeys in the pkey table. Also removed an unneded pr_warn about memory allocation failure. Signed-off-by: Daniel Jurgens Reviewed-by: Eli Cohen Reviewed-by: Leon Romanovsky --- v2: - In ib_get_cached_subnet_prefix wait to initialize p until after validation. Yuval Shaia --- drivers/infiniband/core/cache.c | 36 ++++++++++++++++++++++++++++++++++-- drivers/infiniband/core/core_priv.h | 3 +++ include/rdma/ib_verbs.h | 1 + 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c index 1a2984c..affc8ef 100644 --- a/drivers/infiniband/core/cache.c +++ b/drivers/infiniband/core/cache.c @@ -934,6 +934,26 @@ int ib_get_cached_pkey(struct ib_device *device, } EXPORT_SYMBOL(ib_get_cached_pkey); +int ib_get_cached_subnet_prefix(struct ib_device *device, + u8 port_num, + u64 *sn_pfx) +{ + unsigned long flags; + int p; + + if (port_num < rdma_start_port(device) || + port_num > rdma_end_port(device)) + return -EINVAL; + + p = port_num - rdma_start_port(device); + read_lock_irqsave(&device->cache.lock, flags); + *sn_pfx = device->cache.subnet_prefix_cache[p]; + read_unlock_irqrestore(&device->cache.lock, flags); + + return 0; +} +EXPORT_SYMBOL(ib_get_cached_subnet_prefix); + int ib_find_cached_pkey(struct ib_device *device, u8 port_num, u16 pkey, @@ -1110,6 +1130,8 @@ static void ib_cache_update(struct ib_device *device, device->cache.lmc_cache[port - rdma_start_port(device)] = tprops->lmc; + device->cache.subnet_prefix_cache[port - rdma_start_port(device)] = + tprops->subnet_prefix; write_unlock_irq(&device->cache.lock); kfree(gid_cache); @@ -1168,9 +1190,18 @@ int ib_cache_setup_one(struct ib_device *device) (rdma_end_port(device) - rdma_start_port(device) + 1), GFP_KERNEL); + + device->cache.subnet_prefix_cache = + kcalloc((rdma_end_port(device) - rdma_start_port(device) + 1), + sizeof(*device->cache.subnet_prefix_cache), + GFP_KERNEL); + if (!device->cache.pkey_cache || - !device->cache.lmc_cache) { - pr_warn("Couldn't allocate cache for %s\n", device->name); + !device->cache.lmc_cache || + !device->cache.subnet_prefix_cache) { + kfree(device->cache.pkey_cache); + kfree(device->cache.lmc_cache); + kfree(device->cache.subnet_prefix_cache); return -ENOMEM; } @@ -1213,6 +1244,7 @@ void ib_cache_release_one(struct ib_device *device) gid_table_release_one(device); kfree(device->cache.pkey_cache); kfree(device->cache.lmc_cache); + kfree(device->cache.subnet_prefix_cache); } void ib_cache_cleanup_one(struct ib_device *device) diff --git a/drivers/infiniband/core/core_priv.h b/drivers/infiniband/core/core_priv.h index 19d499d..ce826e4 100644 --- a/drivers/infiniband/core/core_priv.h +++ b/drivers/infiniband/core/core_priv.h @@ -153,4 +153,7 @@ int ib_nl_handle_set_timeout(struct sk_buff *skb, int ib_nl_handle_ip_res_resp(struct sk_buff *skb, struct netlink_callback *cb); +int ib_get_cached_subnet_prefix(struct ib_device *device, + u8 port_num, + u64 *sn_pfx); #endif /* _CORE_PRIV_H */ diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 5ad43a4..db178fd 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -1761,6 +1761,7 @@ struct ib_cache { struct ib_pkey_cache **pkey_cache; struct ib_gid_table **gid_cache; u8 *lmc_cache; + u64 *subnet_prefix_cache; }; struct ib_dma_mapping_ops {