From patchwork Wed Nov 23 14:17:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Jurgens X-Patchwork-Id: 9443443 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 1A61A60235 for ; Wed, 23 Nov 2016 14:19:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 090C1266F3 for ; Wed, 23 Nov 2016 14:19:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EEFBB2679B; Wed, 23 Nov 2016 14:19:54 +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]) (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 118B8266F3 for ; Wed, 23 Nov 2016 14:19:53 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.31,538,1473120000"; d="scan'208";a="1013293" IronPort-PHdr: =?us-ascii?q?9a23=3A9Pg3mhdmNJL6oYPd1Rw6qR0NlGMj4u6mDksu8pMi?= =?us-ascii?q?zoh2WeGdxcq+YxGN2/xhgRfzUJnB7Loc0qyN4vumAzNLv8/JmUtBWaQEbwUCh8?= =?us-ascii?q?QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFRrlKAV6?= =?us-ascii?q?OPn+FJLMgMSrzeCy/IDYbxlViDanb75/KBu7oR/PusQUjodvK7s9wQbVr3VVfO?= =?us-ascii?q?hb2XlmLk+JkRbm4cew8p9j8yBOtP8k6sVNT6b0cbkmQLJBFDgpPHw768PttRnY?= =?us-ascii?q?UAuA/WAcXXkMkhpJGAfK8hf3VYrsvyTgt+p93C6aPdDqTb0xRD+v4btnRAPuhS?= =?us-ascii?q?waOTE56mXXgdFugqxdrhyquhhzz5fJbI2JMfZzeL7Wc9EHSmpbRstfVzJPDJ6y?= =?us-ascii?q?YYUMCOQOP+hYr5H/qlcToxaxChWjCuzxxT9TnXL2wa833v49HQzcwAAsAdQDu2?= =?us-ascii?q?nUotXvM6cSVPi4wqfSwjXFcvhY3Sr96JLHch8/p/GMRq97fM3MxkY1EQPFj0uf?= =?us-ascii?q?qYjnPz6O0+QCrWyb7+56WuKpjG4mpBt9rSSoxscpk4TEgJ8exFPc9Shh3Yo4Kt?= =?us-ascii?q?K1RFR7bNK5CpdcqS6XO5VsTs8/W21kpSI3x7MctZO0fiUG0okryh/fZvCdboSE?= =?us-ascii?q?/BbuWeCMKjlinn1lYqiwhxOq/Eilze3zS9e73U5RripAjtnMrncN1wHP6sSfSv?= =?us-ascii?q?ty4EOh2TGX2gDP8O5EO0E0lbfAK5I73r4xloYcsUTEHiPsnkX5kLSWeVk+9uit?= =?us-ascii?q?6uTnZq3qpp6aN4BqlgHzKrkil8OwDOgiMgUCQnKX9fqz2bH950H1Xa1Gjvgsna?= =?us-ascii?q?nYtJDaK94bpqm8AwJNyYYs9RK/Dzag0NQFkngLNUlKeBWaj4jvJ17BPuv4AOyj?= =?us-ascii?q?g1WsjDhrx/fGMqfnApXWNHfPirjhfbFj60JE0go80chf545ICrEGOP/zVFXxu8?= =?us-ascii?q?beDhAlMgy02P3qCNBl1oMfQG6PGaGYMLjIvV+P/OIvLPGGZJUJtzblN/gl+/nu?= =?us-ascii?q?gGc6mVAHfqmp2oYXZWu7Hvt8IEWZZmfsjs0GEWcQsQo0VPbqh0GaUT5Pe3ayWL?= =?us-ascii?q?ox6SsmB4K8DIfMWJqtjaeb0yinG51afGdGCkqDEX3wbYWLR+8MaD6OIs9mijEE?= =?us-ascii?q?VaauS4sl1RGprwL6z6dnLvbT+i0dr53vzt915/fclRsq7zx7E9yd032RT2Fzhm?= =?us-ascii?q?4IXDE23Lp4oUxm1leOyrN4g/pfFd1d4vNGSAE6OYTaz+NkF9D4QhjBccuRSFa6?= =?us-ascii?q?XtWmBik8T9wrzN8Kf0ZyBc+ijgvY0iq0HbAVjaeEBIEx8q7G2HjxPcl9wW7c1K?= =?us-ascii?q?Y9l1kmXtdPNWq+i65j6gfcGo/JnF+dl6uxaasc2yvN+3uZwmqVoEFUSghwXrvZ?= =?us-ascii?q?XXoHfEvZscz55l/eT7+pEbknNApBycqGKqRUcd3klk9JS+n5ONTZeW6xnH2wBR?= =?us-ascii?q?mQzLOWcIXqY3kd3DnaCEUcjg8c52qGOhIgCSevrGPTFyBhFVL1bEP27elxtmm7?= =?us-ascii?q?QlUyzw6Uc01rz6C19QINhfyAV/MT2aoJuDkgqzpoAFa92MjWB8CcqAphe6VcZ9?= =?us-ascii?q?w97UxD1WLYsQxyJIagL6d4il4ZaQR3sFvk1w9rBYVYjcgqsHQqwRJ2KaKZy1NB?= =?us-ascii?q?ayqU3YvuNb3TK2ny+g2vaqHN11HFyNaW+6EP6PUkpFX4pg2pEFQt82l/2dlPz3?= =?us-ascii?q?Sc/onKDBYVUZ/pSEY38Bx6p7XEbSkn+4zU0nNtPLKvsj/fx90pH/EpyhG6f9dQ?= =?us-ascii?q?KKmEDhP9E9UGB8iyL+wng0CpYQgZPOBW7qI7JdmqeOCB2K6vIOZgmzSmgH9C4I?= =?us-ascii?q?xh1EKM8DZzRvTO35kb3/GSxhGHWCvkjFe9rsD3nphJZTQWHmam1yfkApVcZrNs?= =?us-ascii?q?coYPDWehPde3ys94h5HzR35S7ESjCE8e2M+1ZRqSaETw3Q5O2kQRunyqgii4wC?= =?us-ascii?q?JykzEyqKqQwjDOz/7ldBodNW5BXHNigkv0IYiok9AaW1ClbxYvlBS4/kv62a5b?= =?us-ascii?q?q7l/L2XJR0dHYTT2JXl4UqSsrrqCf9JP6JQwvCVPSuu8fFSaR6XhrBsbzyPiH3?= =?us-ascii?q?JSxD4heDGsoJn5mAZ6iG2FJnZpsHXZYd1wxQvY5NHEX/5ewycJSTJ3iTnSCVmw?= =?us-ascii?q?Jd+p8suIl53bqOCxS3qhVoFPcSns1Y6ArDG05XBuARKhh/C8gNvnERQk3i/hzN?= =?us-ascii?q?RqSD7IowjmYonwzai6KuVnflRyBFDg9cV6FIZ+kpE/hJ4Ow3QagIua/WYfm2fp?= =?us-ascii?q?Ldpbwb7+bGYKRTMTzd7a+g7l2FFkLnKM3I/5WGuSzdZmZ9mgeGwWwjg978dICK?= =?us-ascii?q?iK8LNEgTF5ol2irQLeefJ9hCsSyeMy6H4GhOEEoAUtziWBDbAIHUhYJTDslxOT?= =?us-ascii?q?4tC4sqpXeH2vfqSq20pmg9+tFreCrR9AWHzhYJctATdw7tljMFLLyHDz75vreN?= =?us-ascii?q?3Ubd0Nqh2Ujw3PgPJOJZI3iPUKmTFnNn7nsn091eE3lxpu0o+mvIKfMWVi4Lq5?= =?us-ascii?q?AgJENj3yf84T4CvhjKhEksaTxY+vGpJhGzUQUZTyUf2oFSgetfP9NwaBCDc8sG?= =?us-ascii?q?uUGaLDHQ+D70drt3TPE4qxOHGPPHkU1ttiRBiHJExEnAAUUjQ6npgjGQCs2MPh?= =?us-ascii?q?cV125jQL6l7/sBtMxfpiNwPjXWfHuAeodjA0RYCHLBVI9Q5N+UHVMc2C7uJ0BC?= =?us-ascii?q?xY/4OuoxKTJWCBYARIF24JUFSeB1//Jrmu+cXA8++AC+WjNPvBf6+BqeNEV/iS?= =?us-ascii?q?25KiyZBm8CyPNsWSJHltFec32k5eXXB/AcvZgSwDSzAQlyLOb8+bow2w+itpoc?= =?us-ascii?q?Cj6P7rQh7g5ZOTC7tONtVi4wu2jr2dN+GKiyZ2Ny1Y24gXxXDS1rgQxlEShD91?= =?us-ascii?q?dzW3F7QPqzLNRrrKmqBLFx4bdz9zNMxQ4q0n3wlNNsnbitXu27FlkPE6EFZFWk?= =?us-ascii?q?bnms2zYswKOW69PkvdBEmXLLSGOSHLw8bvbKymRr1flvtUuAOrtDacC0/sIDKD?= =?us-ascii?q?lzzzWBCuNeFDlyabPRNEtIG6aBZtBnDpTMj6ZR2jLN93kTo2zKUohnPNMG4QKy?= =?us-ascii?q?J8c0RMr7KO6yNXme9/G2tf4XpmNuSLhyGZ7+zEJZkMqvtrHj54l+RE73Qm07FV?= =?us-ascii?q?9j1LRORpmCvOqd5ju1Kmk+mLyjV5SxdOrzFLhIyFvUp8JaXZ6plAWXHB/B0T92?= =?us-ascii?q?mQDQoFp8d9AN31p69Q0sTPlL70KDpa8tLU+9ccCNbQKM2ZNXouLwbpGCTUDQYe?= =?us-ascii?q?Sj6rLX/Qh0pYkP6I932VqoM1qp/jmZYUTb9bTlM1HOsACkt5BNwCPIt3XjQ8nL?= =?us-ascii?q?6dksEH/36+oQLSRMVdpZDHSuidAfP0KDaajLlIfR0Izq3kLY4LLI30x1RiakVm?= =?us-ascii?q?nITNA0fQR85CojZ/YQAuukVC7Hh+Q3Yo1ELkcAOi/XgTFfCsnh4slAR/Yf4h9D?= =?us-ascii?q?Hy7FcrPlDKvjc/kFEtmdX5hjCcaCP+LKC2XYFQFiX7qUwxMpLgTglvcwKyh0tk?= =?us-ascii?q?OC3DR7JLgLtqbXprhxPEuZtTBf5cSrVJbwIKyvGJZvUnzE9cpz69yk9d/+vFDp?= =?us-ascii?q?VjlBA0fpGwsnJAwQNjbMI1JKDKIqpG0ERQjLqUviC0zuAx3BMeJ0EV/WOcYi4H?= =?us-ascii?q?plEHNqI8KCqu4uxs7heCliBZd2cQUvomuPVq9lkyO+6Y1SLvz6ZDKlytN+yYN6?= =?us-ascii?q?6Zv2/AldSWTVM210IIkFJI/bdw0cc+aUaUUFovzLSJHRQTKcXCMR1Vb9ZV9HXL?= =?us-ascii?q?ZiaBr+HNwZNzP4WgGeHlVvOBtKERgk24BgkpBJgM4t4HHpayzEHSNd3nI6IdyR?= =?us-ascii?q?Ux+ATrI02IDPdTeBOLijgHpd2/zJ9s0IlSITEdGXlyPT+x5rnJug8gmOCDU8su?= =?us-ascii?q?YncGQosEMWo7WNG7my5cuHRAEDm30+ICxQef7j/9pj7fAyLmY9pleviUeQtmCM?= =?us-ascii?q?uq9jUn76i2lVnX/43eJ2H9K9titMHA6fkBqpaGFfxbU6dyv13bm4lCSHygS3TP?= =?us-ascii?q?HsKtJ5jsd4ksasT5BWy+Uly+lz06Ud/+PNOtL6iOhgHoQ5xbvZKA0zAiL8C9EC?= =?us-ascii?q?gSGxltp+0Z4qJzexEDaYIhYRH0rwQ+K7C/IACA39q1XWmtLyBbQONCwuWkebNX?= =?us-ascii?q?1TEsYfWgyHogVJ06yPO38UEVTpEQkh7e3eqjZ5VZUSXrFXxdZgTPpS49l2d/M+?= =?us-ascii?q?Y/2fowzw3TvlkdKT+LcvZlaGtev9EzHVmSO2l5CnIkR1+AiorO+hSs37YT/yRB?= =?us-ascii?q?n9ZU1ulFsGPmsJHGfTyiQrCmp5LOviU8atgmprF+Ppb4Isuarp/emCLQTIXIuA?= =?us-ascii?q?2fTCG6D+ZamsRXIC9AXPZIm3sqNtAdtIVd7koxUsM+J71RB6k2urCldyZrDS4I?= =?us-ascii?q?wS8eTYOA0yQIgv2g1LvCiheQbJMiPQQesJpYmNsdVDV5bzgCpK+5TYrWiXGLSm?= =?us-ascii?q?wKIAcV4gRM4AMAloBwfuD57orHVoVMyztMr/JyTCTLCoFi90HnRWGOnVj4VPKh?= =?us-ascii?q?nvSp3A1I1/LjyNwbWB95CUVGxuZWilEnKKprJKYKpILKtCGHdV/itmL31OSmPE?= =?us-ascii?q?VRydHTd1DgAovJr3bzUi0d+X0RRI9A0nLfGI8TkwVndqkkuk9AIIe8ekbx/zYk?= =?us-ascii?q?3ZhmH6GkVcC3wFYotWwJRz23E9pHEe1ms0naWDxkY5CqtJXqII9eQmlO952Bs1?= =?us-ascii?q?1ZilliMzalyZpALMFA+jEMXCJVrjWboNu/U8xD2ch4Dp8KPtd/u2nyGKJCOJiN?= =?us-ascii?q?vXI2oKbjynnH9DAgqF263im8G7ekT+JF+G0TAhkpJ2ObqkQ0E+sg7mLS/UvXvl?= =?us-ascii?q?By4ehbGqCFjV9trzZlApBOGjFJ2GilL1tpVnlJqeFaJ7nOfsNBXfYyfQevNAI6?= =?us-ascii?q?FfE4xUyF50Z0nW32YyZqrAtV5zjdXxUoVSkSmrrtmzoepd+8NDAHVZ1Idisubz?= =?us-ascii?q?3ZKw2FhC9bphBfZF92W5oBGNZK56kb3ZdI/srFUUujMi8FUwB+Og86zPZSm1VO?= =?us-ascii?q?v1mfeSDYEQWnb+3PsgFtcceXssGpMOzz/B1bhYP/rOA466IDSmW8mQKzXN/er5?= =?us-ascii?q?XztsGRu0uKc6f4LfOzbWHdQzjLkB+/m60oD5/U8CjPKABbMYV1yWI4YZj9Dm7G?= =?us-ascii?q?JQxGJ7kHJ0VBSK96dc5LovtdZ895YqYG5bFiBhSbRhP1AoOvqONKLlHJRTTRNy?= =?us-ascii?q?+B6PCwoZrP7bzBTujtftCMx2zZTK1pI5h38iT7G7P20Y9E4EX2xPZt9kR+SVfY?= =?us-ascii?q?LyCNttPhJhkE5MO6bEvtooUpHS/KAJd3iHfi20dAeNAMTiK39pQX0olV6HHqSe?= =?us-ascii?q?J3ykLzqvFd96F46Ykr5LBk0cW0Kr3IKfRdqk9nBgKbBhtx+5UoHWh/Q3xRYu4N?= =?us-ascii?q?J/fQZ6sZi9vup/rwF6wN5x2f4/ZZZsffJ0Hdhsm/DSmRSR5ekwcHpz4aNAyc2O?= =?us-ascii?q?OblKJvVcaqv+752lkq41SkKB4J0qxt75+e+qWUvO/XcwfRzb8cV6jsQsP+tbUs?= =?us-ascii?q?u0WX5fE+lb4OfGJ1Yxe9H+gGSs4d3Hrgwrw2zSIxCcPMAajs+PlZV3I2hjjggY?= =?us-ascii?q?xyH00KGvMIGrqG5YJenmYklOzeMt0ZaLtClnyOFR6jFb8C0mWr5jCSIGRqjRDC?= =?us-ascii?q?yRbwQXm87FXuty93XTPMz8v/kkpSTrS4GV1dXy63Nk9jrDOOPA3oucHsuasp7U?= =?us-ascii?q?E5LGrktM6MlGS7Ir9XGdPwJMCEKykuuF0XlIExRsCo2Y0DHdq9O9IR/XFlY/vQ?= =?us-ascii?q?9WykjihBo71diIrG+MGV/ffXEme8gK2GsbmNwypYyncgt1El9t+gLu3O58GNQ/?= =?us-ascii?q?mw0mYRSzlwuw7GXxGrrrzWtF8UNlKM0EfQgIwFJM1Z3Xgi2UHi5egjRs4z+xta?= =?us-ascii?q?FobEZvMCqi78OD3ozlmBed43UDeR0ydPFFLvDVZ4ALQ82H73vM/Rl3fQ+lgoS5?= =?us-ascii?q?J1d0P5hR14EZ84KUMr6FgY2CYDFxYCaQyDBrGyGUvlNZcEVVQEaRmf3bi7e704?= =?us-ascii?q?0ldvzb60/+/cc/B8CLQROfpHiQ6OhldbEIoMsaICWLJ8Z0Nd9KnPqwf5CojnRP?= =?us-ascii?q?bnmmAyNf20XsBa6doWt2Ym4gukWxWg7opM4KgBh5CVbK5EZoLMs9pm40dg/z4P?= =?us-ascii?q?eTRHgAJjgBOhTeAcuOfj78DDsJWy9uahSKYtRusQ9xguBGRyloDwj04nodHW0e?= =?us-ascii?q?dcV4LUhJ/n8A9XP36FpIba0hd7KeoUKIKnZrVg+GsdJygYOX0OOcCaa/4m4y9i?= =?us-ascii?q?KD/T/UBNAtsQZdMEO8rAgRxUilf3V7FX7MXbHEGXBpxueMAp4Gr3ySw1/oEnUu?= =?us-ascii?q?n68j+2OIrT71dTMPNflC9sjs7NpPAJwfrODyga+XaZZAJvwiyc15mNC+39/eGN?= =?us-ascii?q?yNHISVwGHjQ5U5pGJDaY/wyoWPa1no3zUgyI8s/znI4+dEWIS3y+gqsFtLpMEe?= =?us-ascii?q?lHiin8xThRCIT1h/OTs9qx52parVlHH5hp7RzFAqpTJJN7NgrklsOzXEhzGjP/?= =?us-ascii?q?eN3IdhopoOeWw+AM4+NiN0vxe4AWORcEy7Pg5npTUARuVLD3vlGDXeISf9tqUv?= =?us-ascii?q?XEoW5J6Yh4Ma8AIECdpID2rjdPsF02DxMmaKQrrjBDa0fAkwtbW6fyuL4dhQoR?= =?us-ascii?q?StF5uUpWFmK2Jm0y/T3HVb5ajKOJEvwa7i2TTrASU0VvKi5+QRS12JVoe7ezgf?= =?us-ascii?q?9HsmdGnj5gr/kr0jxmQgC8uS7tp68WxzIg+a+4uy8FuXNYT+WSiSHIBktfzP4S?= =?us-ascii?q?l6cTF27i6UCgYHkEdIby4adnKt7m9YQ653Q/fAgsfywBXeS7ES3wiLmIAoOXut?= =?us-ascii?q?JGmBGNoNnObaO0LSUKNLQy1xzjR3Z50gXFkhdn6m0LTSu87NM+IoWyJ9olzDKy?= =?us-ascii?q?GWfHbFYM/r9JsMzpuF4ESOs2bl1gz3tn0siDXSANX8vPG2A0jgc4c2lEdoxM6Q?= =?us-ascii?q?MCHakynjmIprVG/h0TYDrMEISl+onRnd/P2Xk5TNdq2nzZq7aAhpMrzH1lgc17?= =?us-ascii?q?4jSJuHQIeOzSS9VsDWTr1odD1ez+YO2gsvwGSItj07mhTP4CPdWg+WSo3JVmQE?= =?us-ascii?q?mlyaoCH1ChKu8M2q/bUzu5SW2fQemLdmmMnzU6Mk71/hSoLEc4aMRNr087LOTC?= =?us-ascii?q?gIRQlwv/XrNoXi+Qv0PUzHQ/MeMGcAI7oJyodBIMTO4NfOWcPuwuwPoiCFsQcX?= =?us-ascii?q?/GAzZ5B/WxsV63k4hxI29g7lniYeTx7gDmN8OfGgEDEY7etJFx4/K7RmWFOX9u?= =?us-ascii?q?1xByOU509+DEF1svquBcaZGRncPLh9R61+4FeO1hMSonut4cgohj85Wb0N+WcR?= =?us-ascii?q?HNyZb/Pd/VreacA/3e10QlZHpXU7sYYQPw4oU1IMQ5W7nNErdDuhQcH6c6SoQ7?= =?us-ascii?q?N2jt7KF0MB9zcgnJabS0nsnqpuWLZp5OqH/N9V8wKSbcuwEZyvOqVwB7aIqqh3?= =?us-ascii?q?rqKpAqWj1Bt8FtCgdhHIZXFcIAtxCnA5+Il66lkNKx/kJ6u/MQsaXuEPzK0865?= =?us-ascii?q?34ppVZhA+UOLJCrRBLVsgkl9ieSyhunP34LpCcPmY9wET/R7Qm/ZZb/aBIWwNC?= =?us-ascii?q?yBNtj6e0FY776WyKh5XQmJZCDlQ6qGszWpNPFl4UU914x5c/PfzDgs77HAxNvy?= =?us-ascii?q?fHpWpia5on6PM5tT9lvKBfbRXxhMU/qK7H5lHbELbYvz7OoOKsItwNyd4wl18T?= =?us-ascii?q?RD38yJLae9rk/MxE17b4zULFPz1CsiWokFPg6/MU0yjm/dsXvdHHtcItKjKcl3?= =?us-ascii?q?j9afFgbt6FVpmWExem5BHXLlRdOQOWgAx8KzfwyL9BtND9kZheK3f1A3trGqQ+?= =?us-ascii?q?lyJppFgfmqtKkAkdtxLiHAXtRVPyHRLL9wOTpcFfvPpFkuYhEat7g1W4E1ZYWB?= =?us-ascii?q?IU8dN0eA0yzyxxPY0ULob9ysyLqJICEO/3VF1b3F0j9MqBKitPaEhM3jTLDZbJ?= =?us-ascii?q?brXP7dMColSiuWRTIsHka14V2koeYLvOKEIWcDpVAZejmdBxUUqqBrrNjQFXPT?= =?us-ascii?q?mfZ5cJ0Rmv+VRzr8SDZmm6o2ByZLs12MQvUYGAbKb37hmndcuBe4Kv5C533lc6?= =?us-ascii?q?aYxq1TW+AMBYtMaPKZScPCef9CPzcoiikZOOGkct3Ttbk2yUjITWoHHKnM71Ce?= =?us-ascii?q?UkqWTeaHxzLqQIUZpY40tTQ0+tjIhC94D7zIP6qDpz6p6oO4jiOYuerEVmk3Yk?= =?us-ascii?q?w1m/kPAG+bzxlFNm4ECssZuEb3Qq6Pf0xMzm4mifpy2x8QfwR+SmNh0n9RnPa9?= =?us-ascii?q?HM1ZUlkUjGW1Tf0JdlB3ES0w8lGQ4gHoZ9wPp9zTTXdE9rQQUYodMOUo6I7PNa?= =?us-ascii?q?sLzvYp2S5prS05viiGEVNSkBiF86vRHaJ7wL1O/2848O9qXkuXWTPQbnDHypa6?= =?us-ascii?q?C8JI3Spuo3fk18zQvu12MbtVuZx2AFkNASJsOt/S4ypNUWfq1wuu7F6HG2GVIC?= =?us-ascii?q?gY+ykjPisYbaNuyOs9twzHMp7Z4F6Un7ootU/uDAGMELfy05tOTony2R6QdThA?= =?us-ascii?q?cTLtEYt/7PlKipJabLsuf4mlK0jINAnlFgaRsC1K8wLl5vynCcdGzGIEno02Jd?= =?us-ascii?q?3pVpVMBt7cmHljzn9OgpoCw3GAKtLZepD9rcd/ADVGNpC5D2Pse5/PJCn1v/Mr?= =?us-ascii?q?3ZInFkLUY+Ifb0xBtJtjum7sJ3G144j9+DTFeq2xcz20PMMmNZmsj2BIhbaHPY?= =?us-ascii?q?Trsa8RQUEb9LQx3JuT/UvVrS6RNJPuJnI=3D?= X-IPAS-Result: =?us-ascii?q?A2HXBAAzpTVY/wHyM5BeHAEBBAEBCgEBFwEBBAEBCgEBgw0?= =?us-ascii?q?BAQEBAR+BWqRalnMkiCBTAQEBAQEBAQECAQJfKIIzGoIcAgQBAiQTFCALAwMJA?= =?us-ascii?q?QEXCCEICAMBLRURBwcLBRgEiEwEsSs9KgKLPAEBCAEBAQEjjzQRAYV9AQSObYt?= =?us-ascii?q?ikQKKHIYTkXZVXjYegzEcgV9whgoNFweCEAEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 23 Nov 2016 14:19:46 +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 uANEJ5DR020747; Wed, 23 Nov 2016 09:19:15 -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 uANEI1u0047337 for ; Wed, 23 Nov 2016 09:18:01 -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 uANEHvQi020006 for ; Wed, 23 Nov 2016 09:18:00 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1B4BAD5ozVY/4GlL8FeHAEBBAEBCgEBgzgBAQEBAYF5pFqSZYQVhiECgm0BAgEBAQEBAmIohGkCBCdSEBgIMVcHEohxsS89i2gBAQgCJZVDBY5ti2KRApAvkXZVgRSDTxyBXzw0hgorghABAQE X-IPAS-Result: A1B4BAD5ozVY/4GlL8FeHAEBBAEBCgEBgzgBAQEBAYF5pFqSZYQVhiECgm0BAgEBAQEBAmIohGkCBCdSEBgIMVcHEohxsS89i2gBAQgCJZVDBY5ti2KRApAvkXZVgRSDTxyBXzw0hgorghABAQE X-IronPort-AV: E=Sophos;i="5.31,538,1473134400"; d="scan'208";a="5840614" Received: from emsm-gh1-uea10.corp.nsa.gov (HELO emsm-gh1-uea10.nsa.gov) ([10.208.41.36]) by goalie.tycho.ncsc.mil with ESMTP; 23 Nov 2016 09:18:00 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3AotwjbhQmUFnLsvj8OBbgwmijqdpsv+yvbD5Q0YIu?= =?us-ascii?q?jvd0So/mwa6yYRCN2/xhgRfzUJnB7Loc0qyN4vumAzNLv8/JmUtBWaQEbwUCh8?= =?us-ascii?q?QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFRrlKAV6?= =?us-ascii?q?OPn+FJLMgMSrzeCy/IDYbxlViDanb75/KBu7oR/PusQUjodvK7s9wQbVr3VVfO?= =?us-ascii?q?hb2XlmLk+JkRbm4cew8p9j8yBOtP8k6sVNT6b0cbkmQLJBFDgpPHw768PttRnY?= =?us-ascii?q?UAuA/WAcXXkMkhpJGAfK8hf3VYrsvyTgt+p93C6aPdDqTb0xRD+v4btnRAPuhS?= =?us-ascii?q?waLDMy7n3ZhdJsg6JauBKhpgJww4jIYIGOKfFyerrRcc4GSWZdW8pcUTFKDIGh?= =?us-ascii?q?YIsVF+cPPfhWoZTzqVUNqhWxBwesCfjzxjNUnHL6wbc33/g9HQzAwQcuH8gOsH?= =?us-ascii?q?PRrNjtOqkdS+a1x7TMwzXedfNW1iny6I7Tchs8pvyDQKh/cczQyUYxEwPFjE6d?= =?us-ascii?q?qYn7MDOR0uQCqW6b7+1vVO61l2EnrARxryGpy8wxiYfJnpoYxk3A+Ch32oo4Kt?= =?us-ascii?q?+1RFRmbdOlEJZcrTyWO5VyT84kXmpmojw1yqcctp6+ZCUKyIooxxrYa/GfdoiH?= =?us-ascii?q?/BbjVOKLLjd+g3Jkd6iziAq18US6y+38UtG40FdMriVbjtnBrm0B2hjd58SdRf?= =?us-ascii?q?Zw/F2t1SuO2g3T8O1IPF44mK7DJ54k2LEwl54TsUrZHi/xnUX7lLKZeV8i+uip?= =?us-ascii?q?9evnZrfmq4SZN4BqjgH+Nr4hmsq4AeU3KAQBQ2+b+eGk2L354UL5WKlKjuExkq?= =?us-ascii?q?TBq5DVO8Abpq+/Aw9I3Ycu8Aq/Dje639QYmnkLNlRFeAmdgITzNFHOJ+74Xr+D?= =?us-ascii?q?hAGnkC1q3O/uJbr8GdDWKXyFl63uOf5l4lNY4BI60NQa4pVTELxHK/X2HgfquM?= =?us-ascii?q?fwEg4yMwvyxf3uTtp6yMdWVHqGGK6CGLvbq16T/uYmKOTKY5Ua/H7xL/Up6fn0?= =?us-ascii?q?gVcjlFMddLXv1pwSLDijE/1gZUWUb2b9qtYHDWoO+AE5SaiiiFSGFyRUfHu0RL?= =?us-ascii?q?477TITB4evDIOFTYeo05Kb2yLuMpRQLkJbEF+BF2ygI4mNXfYBbCC6J8JlljUC?= =?us-ascii?q?UqjnQIgkg0L9/DTmwqZqe7KHshYTsojugZ0sv7Xe?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0F4BAD5ozVY/4GlL8FeHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBgw0BAQEBAYF5pFqSZYQVhiECgm0BAQEBAQEBAQIBAl8ogjMaAYI?= =?us-ascii?q?bAgQnUhAYCDFXBxKIcbEvPYtoAQEIAiWVQwWObYtikQKQL5F2VYEUg08cgV88N?= =?us-ascii?q?IYKK4IQAQEB?= X-IPAS-Result: =?us-ascii?q?A0F4BAD5ozVY/4GlL8FeHAEBBAEBCgEBFwEBBAEBCgEBgw0?= =?us-ascii?q?BAQEBAYF5pFqSZYQVhiECgm0BAQEBAQEBAQIBAl8ogjMaAYIbAgQnUhAYCDFXB?= =?us-ascii?q?xKIcbEvPYtoAQEIAiWVQwWObYtikQKQL5F2VYEUg08cgV88NIYKK4IQAQEB?= X-IronPort-AV: E=Sophos;i="5.31,538,1473120000"; d="scan'208";a="1249368" Received: from mail-il-dmz.mellanox.com (HELO mellanox.co.il) ([193.47.165.129]) by emsm-gh1-uea10.nsa.gov with ESMTP; 23 Nov 2016 14:17:58 +0000 Received: from Internal Mail-Server by MTLPINE1 (envelope-from danielj@mellanox.com) with ESMTPS (AES256-SHA encrypted); 23 Nov 2016 16:17:56 +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 uANEHdrL021742; Wed, 23 Nov 2016 16:17:53 +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 v6 1/9] IB/core: IB cache enhancements to support Infiniband security Date: Wed, 23 Nov 2016 16:17:23 +0200 Message-Id: <1479910651-43246-2-git-send-email-danielj@mellanox.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1479910651-43246-1-git-send-email-danielj@mellanox.com> References: <1479910651-43246-1-git-send-email-danielj@mellanox.com> X-Mailman-Approved-At: Wed, 23 Nov 2016 09:19:03 -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 {