From patchwork Sun Jan 15 15:10:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SF Markus Elfring X-Patchwork-Id: 9520923 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 750F16043D for ; Tue, 17 Jan 2017 13:31:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 60652205D6 for ; Tue, 17 Jan 2017 13:31:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 550E3284FA; Tue, 17 Jan 2017 13:31: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=-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]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7510A205D6 for ; Tue, 17 Jan 2017 13:31:13 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.33,244,1477958400"; d="scan'208";a="2323459" IronPort-PHdr: =?us-ascii?q?9a23=3Ay0z0uxzLl1jrEtbXCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?1e8QLPad9pjvdHbS+e9qxAeQG96Kt7Qf1KGL6ujJYi8p2d65qncMcZhBBVcuqP?= =?us-ascii?q?49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6?= =?us-ascii?q?JvjvGo7Vks+7y/2+94fdbghMizexe71/IRe5oQjRq8UdnJdvJLs2xhbVuHVDZv?= =?us-ascii?q?5YxXlvJVKdnhb84tm/8Zt++ClOuPwv6tBNX7zic6s3UbJXAjImM3so5MLwrhnM?= =?us-ascii?q?URGP5noHXWoIlBdDHhXI4wv7Xpf1tSv6q/Z91SyHNsD4Ubw4RTKv5LpwRRT2lC?= =?us-ascii?q?kIKSI28GDPisxxkq1bpg6hpwdiyILQeY2ZKeZycr/Ycd4cS2VBRMJRXDFfDI26?= =?us-ascii?q?YYUEEu4NMf9Fo4XholcDqwa1CwuxC+P10jJGm2H43aM63eoiHw/J0gMvENAWsH?= =?us-ascii?q?nWsdn4OrsdX++rw6nT1jjDc/Fb1C3h5ITUfB0tv/eBVq9wf8rLzkkvEhvIgEiQ?= =?us-ascii?q?p4f4OD2azP4Ns2uG7+p7SOmhhGonqw9rojiuwMcshZTCi4ULxVDA+yV52oc1Jd?= =?us-ascii?q?u3SENgfN6kC4VftzuBN4dsWcMiRHxouDwmxbIYt567ezIKyJs5yBLFbfyIbZSI?= =?us-ascii?q?7wvlWe2MIjl4nGpodK+wihu960StyvDwWtOq3FtFsCZJiMTAumgP2hHQ8MSKRf?= =?us-ascii?q?9w8l281TuA1Q3f8PxILEQwmKfdNpUv2KQ/loAJvkTGBiL2nUL2g7KIeUg84eio?= =?us-ascii?q?7vjnYq3hpp+BK494kgH+Pboqmsy4Gek4LhIBX3Ka+eShz73v51H5QbVWgf02la?= =?us-ascii?q?nVqpbaKtgApqGlGQNV14cj6xKnAzen1tQXg2UHIUpYdB+IgIXlIVHDLO3iAfuh?= =?us-ascii?q?jFmgji1ny+3eMr3kGJrNL3zDkLn7fbZ67k5R0BEzws5b55JVDLEBPf3yVlbqu9?= =?us-ascii?q?zfEx85NRC7zPj8CNhmyoMfWX6AAq+eMK/It1+I/fggL/ODZI8SpjbxM+Il6OL2?= =?us-ascii?q?jX8lhV8derGk3ZkQaHC+BPtmP0WZbmDqgtoaE2cKuQw+TOnwh12ZTT5ceWyyX7?= =?us-ascii?q?km6jE8EoKmAp/JRpqxj7yZwCe7AppWa3hEClCOC3jna4aEW+wLaCKUI89hjCcJ?= =?us-ascii?q?VbalS4882hChrxL6y7x7LurJ4CEYsojj1Ndt7e3JiR4y7SB0D9ia02yVV2F7gH?= =?us-ascii?q?gHSCEw3KB+vUx9zUyO0almjPNGC9Nf/fRJUh01NZTE1ex1F8jyWh7dfteOUFup?= =?us-ascii?q?X9KmATc3Tt0s3dAOZ0d9Fs64gR/dxSqqBKUZl7uRBJw76qjcxWT+J95hy3ba06?= =?us-ascii?q?ksl0QpQtdVOm28naNw6w/TB4vVnEqDjKaqab4Q3CjT+2ef1WCOpl1XUBZsUaXZ?= =?us-ascii?q?WnASfkrWrdLl5kzcS7+hF7EnPRVdyc6YKqpHcdrpjU1YS/flPdTReWOxm2OrCh?= =?us-ascii?q?aPybKAdo3qe38S3C/FEkgLjxgT/WqaNQg5Hiqgo2PfDDtoFV/0ZkPs9fByqHK9?= =?us-ascii?q?TkMuyQGFdVdh17m0+h4Lm/OQUfUT0awYuC05sTV7AE69387KC9qHvwdgcqRcYd?= =?us-ascii?q?c44FhZz2LUrAJ9MYK9IKBlnF4RaRx3v1np1xV1FIpPjdQqoGktzApoJqKSyElB?= =?us-ascii?q?eC+A3ZDsJr3XLXH//B61a6HM3FHRzNeW+rwU5fQ9s1XjvRilFlEs8nV8ydVV1G?= =?us-ascii?q?Gc5prSBgoITZ3xSlo39wR9p7zCYSky/YDU1XpxMaSvsT/NwdEpBOw4yhq6eNdf?= =?us-ascii?q?KqyEHhfoE8IGH8iuNPAqm1+xYx0eIe9S7q80MN28d/adwqGkIONgkCihjWRd74?= =?us-ascii?q?B3yliM+DZkSu7Uw5YFxOmV0RedWDf4klihqdz3mIBDZTwJBWqw1SnkC5BXZq1u?= =?us-ascii?q?fIYEE32iI8upydVin5TtQWJX9Ea/B1Ma38+kYRqSYEL53Q1U0kQauninmTakzz?= =?us-ascii?q?xzljEmtLCT3CvUw+TtbBAHIHJERHF+jVfwJoi5l8saXEaybwgujxul+V33x7Nd?= =?us-ascii?q?pKR4IWjTRF1Hfy7sI2FkTKSwqqKIY9RT55MwrSVXTOO8bEiUS7Hnpxsazz3sH3?= =?us-ascii?q?FFxD0gaTGlpI/5kAdniGKYNnpzq2DZec5ozxfF+NPcXeJR3iYBRCRglTnYG0Wz?= =?us-ascii?q?P9iz8tWQjJrMrue+V2e9WZJJainr0ZmMtC2l6m12GRe/hey8msX7EQgm1i/2z9?= =?us-ascii?q?9qVSTMrBb4fIbrzL+3Pvh5cUlyA1/w8c16GptxkoEonpEfxWAahomJ/XoAiWrz?= =?us-ascii?q?L9Rb1r7ibHoKXz4H2cLa4Aji2E1lIXKE3Ib5VnSbwsR7fdm6ZXka2iUn78BFEK?= =?us-ascii?q?2U9qBLnTNpolqkqgLcefx9njYGyfsy8XIamP8GuA4sziWbH7ATElJVPTf0lxSJ?= =?us-ascii?q?6dC+rblYZH21fbi2ykV+gcirDKuerQFERHb5ZpAiEDdq7sV4NFLM1GP86pv4d9?= =?us-ascii?q?nXY9MerQaUkwrcgOhOMp4xkeAKhSV/M2LnoXIl0/I7jQBp3ZyipIiIMXht/Kaj?= =?us-ascii?q?DhFCLDH6fMQT+jXxjaZZmMabxIWvEolnGjUMQJTkV/SoHywOtf7/LQaBDCU8qm?= =?us-ascii?q?uHGbrYBQKf61lpr3TUE52wNHGYOn8Zzc5kRBaDOExTmgcUXC81npQhDACl2NTh?= =?us-ascii?q?cFtl5jAW/lP4sgFDyv9sNxbhSmfQvgGoaisqR5iFNxdW8xpC6FnPMcyF9O5zBC?= =?us-ascii?q?ZY/oC7rAORNGObaQNIDXsGWkOaHVzjOKeh5cXY+eiCGuW+N+fOYamJqeFGSfeI?= =?us-ascii?q?w4+g35B4/zaKK8qPPmNuD/sl1UpfRXp5AdjWmy0TSywLkCLAd9abqw2h+i1ztc?= =?us-ascii?q?2w7PXrWB7v5IeWBbtdK9Nv9wqxgaeZOO6anDx5JipA1pMQ2X/Iz6AS3F0SiiFq?= =?us-ascii?q?aTagCrEAtSnDTKLehKBXEwIbayN0NMtN8a0wxA9NNtDHitntzL53kuY1C0tZVV?= =?us-ascii?q?zmgsypa9YFI2ehNFPAAUaGL7qGKiPWzMHwe6OzU6VQjP9Ttx2ypzmUD1PjMi6E?= =?us-ascii?q?lznzWBClKftMgz2DPBxCpIG9dQ5gBnXlTN38cRC0Ldl3gicszb0znHPKOnYWMS?= =?us-ascii?q?JgfENVsr2Q8SRYj+1lG2Bb4HtpN+yElDyd7+nfKpcbquFkDThxl+5A53Q60bRV?= =?us-ascii?q?5jleRPNpgCvSssJuo1a+n+mJ0DpoSgJOqi5QiYKFvEViI77Z9oVOWXbF+hIC92?= =?us-ascii?q?OQBAgLp9R/Dt3joadQysLAlKjrMjdN78rU/dcAB8jTMM+IK2EuPR3tGD7VFwsF?= =?us-ascii?q?USWrOXvEh0NDjP6e7GaVoYY+qpjtnpoOV7BaWUcpGfIaEERlAccCLI15Xzw+jb?= =?us-ascii?q?6bl8kI5XykoBnWXsVasYjNVuiODvX3NDaZkb5EagMTzrP5IoQTMYv71ld/ZVZk?= =?us-ascii?q?h4vKGlDfXdZXri1mdA80r11H8GJiQW0rx0LldgSt7WcJGv67hBE2lBVxbP8q9D?= =?us-ascii?q?f0/Vg3IF/KqzExkEk1gtrlhj+QfCT2LKeqUoFcEzD0uFQpMpPnXwZ1ahW/nVBj?= =?us-ascii?q?NDfBXb5RlbxgdGF1hw/aopRPA/lcQrNHYBIL2f6XYPAo3khGpSW82U9L/+3FBo?= =?us-ascii?q?V+lAEya56js2pA2x5/bN4yPaHQIrRGwUJUhq+VvS+o0fsxwBMEKEYL62OSey8I?= =?us-ascii?q?tFYONrY4Oyqi5vZs5hCamztfZGgMUOInouh0+UMmJeuP1Tjg3KJDKk2qLOOfLr?= =?us-ascii?q?mZtHXHlc6GWlMwzF0Hlklf8bhwz8gjb1KeV1ozw7uJCxQJKc3CJBlIYMVI6njT?= =?us-ascii?q?fDuBsf7WzJ1vJYW9DOfoTOGVtKkKnk2kARwpH4UQ7sUBBJWs1l/XLdv/Jr4f1R?= =?us-ascii?q?ot/BjrJEmCDPlRZR2LiykIrNuwzJ9tx4ZdOCoQAX5nPiW0+7bXvBUljOCHXNcr?= =?us-ascii?q?ZHcVRJEEOmsqWM29mC5Yv3NAACOx0u0H1AiI9yX8qTjIDDngc9pjY++ZZR12CN?= =?us-ascii?q?6o5Do/6LK5iVjL8pXZPGH3Ls5ttcPK6e8AoJaHEfxUR6Fns0jAg4lYW2CqU2nX?= =?us-ascii?q?HN6xIJjwcZcjbdr1C3a9SVG/hDQ1T9rrMNaqNKiIjhniRZxIv4mDwDAjKci9Gy?= =?us-ascii?q?kFGxhuo+ED5aR8ZRAMYpcgfRHosAE+OLClLweDztWiWWCtJiVKT/NH1+W1e6RX?= =?us-ascii?q?zzYwbu+90HYvU401z+yw8U4LWJEGkwrTxei9aIlEUCjyG3tdewPVqSo/iWdhKv?= =?us-ascii?q?44wv0jzxPQrVkcLzeLefRqaGxev9AzH1WSIWl2CmcjSF+cipLD7RK207AU4SRd?= =?us-ascii?q?g85e0fdZv3jmop/ffDWsVbS3qZXUtiogasQmo61xMIH4P8SGtZPfkSbEQ5XKtA?= =?us-ascii?q?2KTjK6HeJAmtdMOCJYXOVImWY9NMwJo4pO80wxVtslKrxOD6ktqLaqaSZkDSEM?= =?us-ascii?q?zC8ZUZ+A0yIYguum3bvViAuQeow4MBMYqJVCnscdUylubywEoK+jVpnZmHGcRW?= =?us-ascii?q?gOIAYT6wNM5AQamYJrZe/l4ZDHTJlVxz5YvvJ4SC3LGYd091HjUGGZnUD4SOm9?= =?us-ascii?q?k+yuxQ9d1+zj0t8AVRFlFEdd2fhZllEzKL5tMakRvpTGsjiSdUP1pGjt0vepJE?= =?us-ascii?q?FNyc3IcF31FJDFtWz9UiIA+X0UQotPyGrHG5oLjgR3cromqlJXLY+6fUb+4iAr?= =?us-ascii?q?yJ5yH7mkT8yrwUgqrWoeTSewD9VBE/1msE7QWDB9f5+rqo/qNIlJT2BM/52dr1?= =?us-ascii?q?NZkERzPC6j1ZpTNd1C4j4WUDhIuzWds8O4SNdf1s9uE58MPtB/tm/nGKxeIpiR?= =?us-ascii?q?pGY5t6fzyn/D4T88rkm1xDGyG6++QOJZ+2weGgopJ2SCpEkgFfEs8mLI/lDLrF?= =?us-ascii?q?904/9RBqKTgkVpvDZ9ApdOCy5H1Hy/M1tzTHhGs+BbKKvPcMxRWPgyagGxNBMg?= =?us-ascii?q?D/Im2FaJ/U5sl3fjfyNyrhda+zzaXwQsTSkVhbPtlicEqsCpPj8aT5xIYC4kby?= =?us-ascii?q?fCLAKbgj5YswpFa0FtQJAZGddF+7cU3YdO+crCU0msIzkfXBN+LgI4zeZflUlb?= =?us-ascii?q?vUqCYyDdEAyoeezMshBsfMeRrc+pLOji8wtdjIPorvw4/b0ZR3K6gQ2tXczer4?= =?us-ascii?q?jku92WsUuOcbz1M/GgbX/EVzfAlxawiqk4D5PS5SjcLBJbK4VmyXojeZXhCXTE?= =?us-ascii?q?PQ5cKKIfOkVWTr11ZsteouBCecBkfLgG+bV3ChKAXBPvF5SlrONaIVbLWTTeMy?= =?us-ascii?q?KB//S9oYLU87PQUvXvadKXx3nZWaJ3Iol15iThF7fsz4Be5lL82u1x+UNiVVjG?= =?us-ascii?q?LyeBocz6KQMF+MauaknvsoAnED7NHJhwl3/tyV1aeMoMXy2m6pIYx41F6HzoU+?= =?us-ascii?q?J3zlDzsPFO97lj8YQ3+a5mxtq0JajINfRXqktnAh+KBgp06JkiHG9/SH1PbeML?= =?us-ascii?q?LvfeY7gZh9j0q+/rD6wX9AGV++tBZNvfPEHBhtOwBSyASRFfhwcBriMaLhGA2P?= =?us-ascii?q?Gbna90VdylqvL92k435Fi+NBEGxqh35YiY4qqIuPPXbxzJwLgYQKjlWN38oak3?= =?us-ascii?q?tkOP4f0kiKQOdXZrYw2mF+gdUtASxnv6waAt1yIsHNvJH6j89/5bS3I5gjXglo?= =?us-ascii?q?h4H1oMHvMUGaSE/ZhCnmgigePULdsWfb5emmaUCRGrCKcCxmCx5yuRPmZlngnE?= =?us-ascii?q?0wvsTmOr8F/2sSh4TDPOz9j5iEpVUaK3BUNIUCq3IkJ4tS6PPA70tNr2pas17V?= =?us-ascii?q?s5Mmr/tN6Xk2uhIrxXFdXlJNOAOSk0uE4XjJopS9ytw48bH9S9IM0W8H5jcPTT?= =?us-ascii?q?8H+rnDVHo6dcgIrS+MeV9evLHXO4la2Vt62NxCxEyng/pVw/5c2gNvDK592OXf?= =?us-ascii?q?uo0n0cQDphtATaXh66sLrbo0oTOUyR30fBgJYKMc1B3XkkykHm4/AuQNQ39AhF?= =?us-ascii?q?F4bAYfYCqSryODvyz1afecg4VjKC0ztNA1L6DUV4GLUm2G3ups7Jkm3Q+1IwTI?= =?us-ascii?q?lqa0PnnQB3D5k/KU817VgXxSwDERQCaR+FF7yoAEXlIpECVUcddRSG0r+6er00?= =?us-ascii?q?3U1o2L+v4vHcbfBkDaoXKvldlhKOnERcGp8Oq60RXa9zdkRS9K7SqQnuEY7nUO?= =?us-ascii?q?b6lXAoL/26Xtha8dwFt3sl+gu/QwGg6ZJD4rsAhpCHaLNLYZ/WvM9m90dn/zkP?= =?us-ascii?q?di5TjxdjkxO1S+ccpPrs4tLDqpqn9v6uVLoxR+UQ7xU0HH5xj4Xqj1Asv97XzP?= =?us-ascii?q?xRSpbPhoTh6g9NLGCFuJ3A3xl6N+UON5qhfKx8+HUfOygeO3UOMMKUa/k95i9g?= =?us-ascii?q?KzDT6EJCA8wSf9MYPczNmQ9Ohk3vRr5T6tLRGkWEBIdra8Ao8233xSg08Zo9SO?= =?us-ascii?q?nv8iO5KIvE715TI/NMkjljmMjFpOgPzvrYEDIX7mWBaxhp3iOCzIGABO3x/eWX?= =?us-ascii?q?xtDbTVEGHi8qU4dFPjWC5AinS/Gpm5XuTwyb9NX8gI8kdEKXXHy+hr4JsqFWEe?= =?us-ascii?q?5Pki/7xCRRFpjph/KJtNqh8HNXuUdbEIlv7R3EFqJfPo94ORjhjcmkWEx8Bir5?= =?us-ascii?q?eMHJeRsjo/KWyf0Q4+piN0v/a4gbIggHy77g6npaUBFuSLjosVadR+4RY8FmSP?= =?us-ascii?q?zcpHBP9Y1gM7MPPESapJHysjdIsk45AAszZ782sDNXbVTBnAxaW6b1pL4PkBAc?= =?us-ascii?q?XsRjuU9RA26wPnwx5ybfX6RPkKaREOAV8imUTqEWXEVnKDl+TA2p2JVuYLapmf?= =?us-ascii?q?FHsn9YkSN9uvcqzidmSAG6uSLyu6IHwSgg962gtDUdpXxFSf2TkyjWBlVF0PQK?= =?us-ascii?q?iqAcB3H56VOiZHkDbY3y4KRoJMn78Yku/W4/YBU5cCEcW+SvFT3whbuSAoOTqN?= =?us-ascii?q?JcmAKNuMLWYL+1LCgdKrM9yRb5SHhmyATenRFo8GwQQjW799IkIYqwOMk/yiqv?= =?us-ascii?q?A2jbe04G4rlVv8vpqV4LUOw2ZEtuwGp/yciHXTQBStHAFWgzjwgkb3hEcZ1Y5B?= =?us-ascii?q?8VEqknmDCIsbdc8gETejfUHZyv+pPMksfQxXk9UdBqy3rUpq2ChpMq1mdplM90?= =?us-ascii?q?7i6KpXQdau3ZU85qAnjo1YdfyPfzZ+ussuAZUoRmzKmuUP4YPsml52S2xI1gWl?= =?us-ascii?q?W5ybQGA1q5LOgDy6/aUye7U2KYX/+Gc2yRnzkkM07y4gKoIkcwaMdQoE83KvHC?= =?us-ascii?q?iYJElw39TbN0QT2dpV3Fw2wtP+Macxk7uYm9dAwMUuERe/KQJe4wz/0iEFEMdW?= =?us-ascii?q?PGHTNqC++qtl6ghId7O3Fn4UT0f+vt9gTmPcCJGhkDF47ar4J+9ea8Rm2fJX9q?= =?us-ascii?q?1AdyM1Vs9+fDC1QxsfdRc5SRndnQn9R71uoFd/ZxMSIjodMTn4Nj6ZWO0MiUax?= =?us-ascii?q?3RyYzyJd7NqPiCH/Lf11gqen1dUrcBfQP15oA6M8UlW73SAbRZvgoTBawgTJwn?= =?us-ascii?q?KWjx6Ll+LBlvfQ7JeLS0ns7qq/qOZptVpH/W7VUwITzeuxIZyfy0Sgp7YI6sh3?= =?us-ascii?q?noJpA/WC5BpcV3ChR6BItPB98Arw2/DpGPhq67jcOx9lhhu+8OtqrwFuzK1Mqn?= =?us-ascii?q?0IpsRZRa4laLPDnJDqlxnktllviyguvH0pTpB8PtZ9cEVOljQmHbcbLHH4S/Kj?= =?us-ascii?q?eLOs3iYU5G96CT3Kh+UhWLayDzR7CGuzG8NPV4/UU7zZR1feTLzDw37rHUxMX9?= =?us-ascii?q?anpepieisX6JLoVQ4EbNBezEUBJeUeCF/3p9Ha0LcYv08/8DMdsmwNeC+ARz9D?= =?us-ascii?q?BC39GeI6i9r0/Dxl57dYjFI0T3wSo5X5cFIAinO0s2nWDZsmjdAWhbLsW8Lclt?= =?us-ascii?q?gdCVDgHi5kVonWEtZ3VBGnbzRdqKOGgUwcS+ZAqQ+AJMFdYDkPa9eVQkua2qVe?= =?us-ascii?q?loJpJFlP2xtLoZldZpKifPRNVVPi3XI7F2IjpRAfvVpFc2eh4LqaM4WoQrapiU?= =?us-ascii?q?JkMILkOAxjjvzQvNy0H0cMas1KmRKiYM7npH167F0SRLpwShvPaWmNHsULDYbJ?= =?us-ascii?q?HwW/7fKzQlVjCcRTssFUap+FGku+cLvfaCJmcfuF8UaDqICAEPvqBvscTQDmjL?= =?us-ascii?q?lO1hZpIKh/eaVDvrRS1lkqoyGiZLtUeRQ/oMFQnWc2XtgGxCtwy+PvVM527qb6?= =?us-ascii?q?WExqpJXOwbGoRMfeeCTNvCePBROTMomy4HOOa4ZdLctLc50k/SQWsfDabI6EWU?= =?us-ascii?q?TFSKTfyE2zLrQYIVspA2uiot/dLQhDV3E6XTP7uEoT6h6Iu4gziZueHEUWkteU?= =?us-ascii?q?M1ivoYAGad2BlANH0EC9YNtUH2TK6AYlpD2XMqhO91xR8DZh5zUnxv031Rmvax?= =?us-ascii?q?AMtZRkAIjGm2Wv0JcEh3DC8s/U+N+gDyY9sAucbXR2JF87sDV5cSLPcv6InNJK?= =?us-ascii?q?Qf3uwl3DR4rywm4G2hCAZZjwSY4+/LEalh3Lxe9Cw9+P1rWkynXTzSaC7Ex5Cg?= =?us-ascii?q?BsYJwj1h5Tj/2s7VuP19HKdLrIF+RlERCGR5Ic6ZtR1bUGq84AKovg3zSDmGKS?= =?us-ascii?q?gY+x4TLDYEbf5xxuR29hHSeYCFoWGZsq864G6sExyKEfLg2pVOB9qv0UO9bjNR?= =?us-ascii?q?cC6DEIp/ofJA0t0VZPVjLbC3HlSJCw/5FA/Q7zgF6RzCur22CY9PxWIEn+MnL9?= =?us-ascii?q?S/G8FANtTD0zww7jAA5JMLyXyXSJuLfZDj5MFQBXgKMoi7D3LsZcSNdw7uuegD?= =?us-ascii?q?35FmLEObbOEXLSoPqJItvnv7ZFOvv4Hr92mCKb/uMXSGOcUKMZ2tw1NJiKvbKp?= =?us-ascii?q?ims+NDDX4G9K16goXasnrTsCiHSdexYnL6hB4uM0v/R96U/MRGHNYJZqlpDMAo?= =?us-ascii?q?dkYAqRw5dbhjCsagsjrt1j/eRu9lo3Usfg7+FZ6l1plceXh16Izy0ALbzu30Xb?= =?us-ascii?q?nMV5eY2IbkIw09m/IsPNI=3D?= X-IPAS-Result: =?us-ascii?q?A2HLAgAzHH5Y/wHyM5BdGQEBAQEBAQEBAQEBBwEBAQEBFQE?= =?us-ascii?q?BAQECAQEBAQgBAQEBgw4BAQEBAR9igQaOSpEmlzAmgk2FRVcBAQEBAQEBAQIBA?= =?us-ascii?q?mAogjMbAYIbBgECJBMUIAsDAwkBARcHASEICAMBLRURBgEHBQYCAQEBGASIYgS?= =?us-ascii?q?xEzomAollAQEIAQEBASSIR4Z/EQGGAAEEiHqSQJFfiiAKBReGJ0iSJFhxNigKO?= =?us-ascii?q?oQ3HBiBSHKGKoIuAQEB?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 17 Jan 2017 13:31:07 +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 v0HDV37t014618; Tue, 17 Jan 2017 08:31:03 -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 v0FFAS53226305 for ; Sun, 15 Jan 2017 10:10: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 v0FFAR7r022417; Sun, 15 Jan 2017 10:10:27 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1DpAgCgkHtYhwQP49RdGgEBAQECAQEBAQgBAQEBgzkBAQEBAYEBgQaDUZwZkx2EGoJsgzYCghhXAQIBAQEBAQITAQEBCA0JCh2FGgMDIwRSEB8BBQImAgJXBgEMBgIBAYkDr3qBazqJfAEBAQEBBQEBAQEBI4ELhzyKM4JeAQSIepJAkV+KIAoFhj5IkiSBfigKhHERCxiBSHKIYgEBAQ X-IPAS-Result: A1DpAgCgkHtYhwQP49RdGgEBAQECAQEBAQgBAQEBgzkBAQEBAYEBgQaDUZwZkx2EGoJsgzYCghhXAQIBAQEBAQITAQEBCA0JCh2FGgMDIwRSEB8BBQImAgJXBgEMBgIBAYkDr3qBazqJfAEBAQEBBQEBAQEBI4ELhzyKM4JeAQSIepJAkV+KIAoFhj5IkiSBfigKhHERCxiBSHKIYgEBAQ X-IronPort-AV: E=Sophos;i="5.33,233,1477972800"; d="scan'208";a="5907584" 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; 15 Jan 2017 10:10:27 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3Af3SdFhMZSobZC4AFavEl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0K/34pMbcNUDSrc9gkEXOFd2CrakV16yN7+u5BDJIyK3CmUhKSIZLWR4BhJ?= =?us-ascii?q?detC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBxrwKxd+?= =?us-ascii?q?KPjrFY7OlcS30P2594HObwlSijewZbx/IA+4oAjeucUanItvJ6cswRbVv3VEfP?= =?us-ascii?q?hby3l1LlyJhRb84cmw/J9n8ytOvv8q6tBNX6bncakmVLJUFDspPXw7683trhnD?= =?us-ascii?q?UBCA5mAAXWUMkxpHGBbK4RfnVZrsqCT6t+592C6HPc3qSL0/RDqv47t3RBLulS?= =?us-ascii?q?wKLCAy/n3JhcNsjaJbuBOhqAJ5w47Ie4GeKf5ycrrAcd8GWWZNW8BcXDFDDIyh?= =?us-ascii?q?dYsCF/cPM/hWr4f9pFUAoxWxCgauC+zzxTFFnWP20K8g3ug9DQ3L0g4tEtQTu3?= =?us-ascii?q?rUttX1M6ISXPiowqfI0D7NaOlZ2S3+6IjVaRAqvP6CXbZ+ccrLyEkvEQzFhUiX?= =?us-ascii?q?pIP7OzOV2P4Ns2md7+pvTu+vlnUnpB9roji03MsskY7Jhp8Pyl/Y6yp5zoE1Jc?= =?us-ascii?q?e3SEFle9KkFoVftz2DOoZwX8gsQHlotT4kxrEbp5K3ZjYGxIolyhLFdvCKc5KE?= =?us-ascii?q?7x37WOuTIjp0nn1odbalixqv/kWtyPfwWtSw3VtOqCdOj8PCuWoX1xPJ78iKUv?= =?us-ascii?q?t98Vml2TaIzw3T7+ZEIV0olabBJZ8u3KU/moAOvkvdBiP2mUP2g7GKdkg85OSk?= =?us-ascii?q?9vrrbq/4qpOCNYJ4kBzyP6Q0lsGwGeg4NxIBX2mf+eSyzr3j+kj5Ta1Ugf0ynK?= =?us-ascii?q?nZqpHaJcIUpqOiHg9VyZgs6wykDzu8y9QYmmQHLEhZdx2ZgYjpPEvOIP/mAvul?= =?us-ascii?q?hVSjjitry+jcPrL9GpXNMmTDkLD5cLZm9UFczAszzdZC55NbEbwBPPLyVVPxtN?= =?us-ascii?q?zfFBM5NRe0zPz9BNVy0YMeR3qFArWFP6PKrV+I+uUvLvGXZIAIozbwMOQl5v7y?= =?us-ascii?q?gn85nl8RZ6+p3YANZ3yiEfRmJFuZMjLQhYIFEGEXrk8lQef3klyeQHtWYHqvW6?= =?us-ascii?q?8U+D42EsSlAJ3FS4Trh6aOmG+gE5lXYH1WIkydGnfvMYOfUrEDbzzWauJ7kzdM?= =?us-ascii?q?bbG7SpRpgRy2vRX70JJ/J/DV4TUcvJnukt9v6LuX3TM78DFvR+GayXuMVCkgnG?= =?us-ascii?q?oNSiRw2OZ6plZny0yr1rJxiPhVU9dU4qUNGj8zKJqU6ut9Ed26DhrIY9OhUF+7?= =?us-ascii?q?RpCjBjYrQ5Q6xNpYJw43INi4gR2L8mziI7YRk62NTtRg6a/G0HXZJ895z2fAkq?= =?us-ascii?q?Imig9iCvBTOHWmi6g3zA3aA4rEgg3NjKqxXbgN1y7KsmGYxCyBu18OFEZPUKHB?= =?us-ascii?q?XHkaLnHRp9nj+liKG6CvDbAmOw4HwoiYLaFHcMHypVRAWPrnft/ZZjTitX23AE?= =?us-ascii?q?Oz6PupZZDpZn5V8SHTEkkCnEhH8HKILwk4CQ+8uG/EF3p1Ek/1aE7i9vNxpTW9?= =?us-ascii?q?Q1NinFLCVFFoy7fgok1dvvebUf5Gm+tc4Co=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0HvAgClj3tYhwQP49RdGgEBAQECAQEBA?= =?us-ascii?q?QgBAQEBFgEBAQMBAQEJAQEBgw4BAQEBAYEBgQaDUZwZkx2EGoJsgzYCghhXAQE?= =?us-ascii?q?BAQEBAQECAQIQAQEBCA0JCh0wgjMbAYIbAwMjBFIQHwEFAiYCAlcGAQwGAgEBi?= =?us-ascii?q?QOveoFrOol8AQEBAQEFAQEBAQEjgQuHPIozgl4FiHqSQJFfiiAKBYY+SJIkgX8?= =?us-ascii?q?oCoRxEQsYgUhyiGIBAQE?= X-IPAS-Result: =?us-ascii?q?A0HvAgClj3tYhwQP49RdGgEBAQECAQEBAQgBAQEBFgEBAQM?= =?us-ascii?q?BAQEJAQEBgw4BAQEBAYEBgQaDUZwZkx2EGoJsgzYCghhXAQEBAQEBAQECAQIQA?= =?us-ascii?q?QEBCA0JCh0wgjMbAYIbAwMjBFIQHwEFAiYCAlcGAQwGAgEBiQOveoFrOol8AQE?= =?us-ascii?q?BAQEFAQEBAQEjgQuHPIozgl4FiHqSQJFfiiAKBYY+SJIkgX8oCoRxEQsYgUhyi?= =?us-ascii?q?GIBAQE?= X-IronPort-AV: E=Sophos;i="5.33,233,1477958400"; d="scan'208";a="2302544" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from mout.web.de ([212.227.15.4]) by emsm-gh1-uea11.nsa.gov with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Jan 2017 15:10:26 +0000 Received: from [192.168.1.2] ([78.49.147.199]) by smtp.web.de (mrweb001 [213.165.67.108]) with ESMTPSA (Nemesis) id 0LbZpT-1cq3v31HYp-00lDi5; Sun, 15 Jan 2017 16:10:14 +0100 Subject: [PATCH 10/46] selinux: Move some assignments for the variable "rc" in policydb_read() To: linux-security-module@vger.kernel.org, selinux@tycho.nsa.gov, Eric Paris , James Morris , Paul Moore , "Serge E. Hallyn" , Stephen Smalley , William Roberts References: From: SF Markus Elfring Message-ID: <7fdcfc8f-affa-fcf8-adaf-dc8fd9e1b472@users.sourceforge.net> Date: Sun, 15 Jan 2017 16:10:10 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: X-Provags-ID: V03:K0:jv9NtN93JHBO7eurFrAmK5Jo9DY4xVcw2xa3dHw4kPWwr9xu7gg vY4W3cFCxplXftdx1HThJA3tTWIH7+rYrA/7YPjkjpqggiQb45v/34k9EDRD6SYlFapJVWD ynhUvCWIz46oysYdknvz9LhGE9bWDag6JzTofuirdn7pJ+Lb4XH6kTmAEBzSpS01uOzo3CO HFuYtuINT/RZtQ2/yvOFg== X-UI-Out-Filterresults: notjunk:1; V01:K0:+joaBIacCx4=:wZ7xTCD3Y+wpxPUYhclHB1 7Rb6XeV2KRyOlDV0d0bMiiR9q1jx4KjFaRzZE3+/k3EQQgZXh5WWl6Q4+fvriVHJoXj+d1Ceh XNCnosmHIHsYQ5s8AVhedyKjjVf0foEnF6t7hW0XAT+O6RMD5PxEf232ShMdJpVOKjxHydKbj D42sXq5EqUnlR4MnHsgK3eLY1q+uyfwwLaDVwhDpxrwdjecOauAi28VozjA8YaG/xuvi0JHnW JgYr9K0I4homXh9Plm/WBbNPdms89mY4PEtXZ2ZWMlvtXPnAil4BxWpaeWFYnbW81VUlfBO2q RstIeOac0k88VLEmsyZ8+46iP0EixiLCDE+bqzL28BpoY1wUll+pP8sTW6HsX+U3twgc32Ueb 27i7CLog9ur3CMXAmqwsMXUnWjogK0YT0UgAqoOEFpZhp4/RoQ/hSBGmyNb0ZrWCpOq4V+XH2 GCgLhZ2VfH4+H5zya6Mv8r5HtJ7KDxV0KvH9Er06wzWsJK2biLtUYTT+WtmKit5CAsex+VSzz 1NRzCsOHICFErOCvR7IaCELeHQ6b6GUK2W8krygX3R8vidHORGN3+/8Tp/Jd50Sdrld8aYvni Vm6Ir2yfqfDedjc9E6ePfxCMjqjs/0Z7F3dqx13glfPV0b1LR6064JHzBmfrJT56aRUvKP4gx kslLLeMwlGfTC0pZRf9LoiyR7HNvOZ/2ZYKIDT3aRtZjod+oncLK/zkhkAM77nS2GlAdRodSh f9f35z2bsPXuAy1FQ3//YSOkH3FQSQlPZzCOALkwYi8y/h4iOltU3XRq0VWXyjN77qn5n7ZkY 4dHkVfI X-Mailman-Approved-At: Tue, 17 Jan 2017 08:26:53 -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: kernel-janitors@vger.kernel.org, LKML Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP From: Markus Elfring Date: Sat, 14 Jan 2017 15:22:29 +0100 One local variable was set to an error code in some cases before a concrete error situation was detected. Thus move the corresponding assignments into if branches to indicate a software failure there. Signed-off-by: Markus Elfring --- security/selinux/ss/policydb.c | 59 +++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c index 53e6d06e772a..506b0228d1f1 100644 --- a/security/selinux/ss/policydb.c +++ b/security/selinux/ss/policydb.c @@ -2250,15 +2250,14 @@ int policydb_read(struct policydb *p, void *fp) if (rc) goto bad; - rc = -EINVAL; if (le32_to_cpu(buf[0]) != POLICYDB_MAGIC) { printk(KERN_ERR "SELinux: policydb magic number 0x%x does " "not match expected magic number 0x%x\n", le32_to_cpu(buf[0]), POLICYDB_MAGIC); + rc = -EINVAL; goto bad; } - rc = -EINVAL; len = le32_to_cpu(buf[1]); if (len != strlen(POLICYDB_STRING)) { printk(KERN_ERR "SELinux: policydb string length %d does not " @@ -2265,11 +2265,13 @@ int policydb_read(struct policydb *p, void *fp) len, strlen(POLICYDB_STRING)); + rc = -EINVAL; goto bad; } - rc = -ENOMEM; policydb_str = kmalloc(len + 1, GFP_KERNEL); - if (!policydb_str) + if (!policydb_str) { + rc = -ENOMEM; goto bad; + } rc = next_entry(policydb_str, fp, len); if (rc) { @@ -2279,12 +2280,12 @@ int policydb_read(struct policydb *p, void *fp) goto bad; } - rc = -EINVAL; policydb_str[len] = '\0'; if (strcmp(policydb_str, POLICYDB_STRING)) { printk(KERN_ERR "SELinux: policydb string %s does not match " "my string %s\n", policydb_str, POLICYDB_STRING); kfree(policydb_str); + rc = -EINVAL; goto bad; } /* Done with policydb_str. */ @@ -2296,24 +2297,24 @@ int policydb_read(struct policydb *p, void *fp) if (rc) goto bad; - rc = -EINVAL; p->policyvers = le32_to_cpu(buf[0]); if (p->policyvers < POLICYDB_VERSION_MIN || p->policyvers > POLICYDB_VERSION_MAX) { printk(KERN_ERR "SELinux: policydb version %d does not match " "my version range %d-%d\n", le32_to_cpu(buf[0]), POLICYDB_VERSION_MIN, POLICYDB_VERSION_MAX); + rc = -EINVAL; goto bad; } if ((le32_to_cpu(buf[1]) & POLICYDB_CONFIG_MLS)) { p->mls_enabled = 1; - rc = -EINVAL; if (p->policyvers < POLICYDB_VERSION_MLS) { printk(KERN_ERR "SELinux: security policydb version %d " "(MLS) not backwards compatible\n", p->policyvers); + rc = -EINVAL; goto bad; } } @@ -2332,21 +2333,21 @@ int policydb_read(struct policydb *p, void *fp) goto bad; } - rc = -EINVAL; info = policydb_lookup_compat(p->policyvers); if (!info) { printk(KERN_ERR "SELinux: unable to find policy compat info " "for version %d\n", p->policyvers); + rc = -EINVAL; goto bad; } - rc = -EINVAL; if (le32_to_cpu(buf[2]) != info->sym_num || le32_to_cpu(buf[3]) != info->ocon_num) { printk(KERN_ERR "SELinux: policydb table sizes (%d,%d) do " "not match mine (%d,%d)\n", le32_to_cpu(buf[2]), le32_to_cpu(buf[3]), info->sym_num, info->ocon_num); + rc = -EINVAL; goto bad; } @@ -2365,10 +2366,11 @@ int policydb_read(struct policydb *p, void *fp) p->symtab[i].nprim = nprim; } - rc = -EINVAL; p->process_class = string_to_security_class(p, "process"); - if (!p->process_class) + if (!p->process_class) { + rc = -EINVAL; goto bad; + } rc = avtab_read(&p->te_avtab, fp, p); if (rc) @@ -2386,10 +2388,12 @@ int policydb_read(struct policydb *p, void *fp) nel = le32_to_cpu(buf[0]); ltr = NULL; for (i = 0; i < nel; i++) { - rc = -ENOMEM; tr = kzalloc(sizeof(*tr), GFP_KERNEL); - if (!tr) + if (!tr) { + rc = -ENOMEM; goto bad; + } + if (ltr) ltr->next = tr; else @@ -2398,7 +2402,6 @@ int policydb_read(struct policydb *p, void *fp) if (rc) goto bad; - rc = -EINVAL; tr->role = le32_to_cpu(buf[0]); tr->type = le32_to_cpu(buf[1]); tr->new_role = le32_to_cpu(buf[2]); @@ -2410,12 +2413,14 @@ int policydb_read(struct policydb *p, void *fp) } else tr->tclass = p->process_class; - rc = -EINVAL; if (!policydb_role_isvalid(p, tr->role) || !policydb_type_isvalid(p, tr->type) || !policydb_class_isvalid(p, tr->tclass) || - !policydb_role_isvalid(p, tr->new_role)) + !policydb_role_isvalid(p, tr->new_role)) { + rc = -EINVAL; goto bad; + } + ltr = tr; } @@ -2425,10 +2430,12 @@ int policydb_read(struct policydb *p, void *fp) nel = le32_to_cpu(buf[0]); lra = NULL; for (i = 0; i < nel; i++) { - rc = -ENOMEM; ra = kzalloc(sizeof(*ra), GFP_KERNEL); - if (!ra) + if (!ra) { + rc = -ENOMEM; goto bad; + } + if (lra) lra->next = ra; else @@ -2437,12 +2444,14 @@ int policydb_read(struct policydb *p, void *fp) if (rc) goto bad; - rc = -EINVAL; ra->role = le32_to_cpu(buf[0]); ra->new_role = le32_to_cpu(buf[1]); if (!policydb_role_isvalid(p, ra->role) || - !policydb_role_isvalid(p, ra->new_role)) + !policydb_role_isvalid(p, ra->new_role)) { + rc = -EINVAL; goto bad; + } + lra = ra; } @@ -2454,11 +2463,12 @@ int policydb_read(struct policydb *p, void *fp) if (rc) goto bad; - rc = -EINVAL; p->process_trans_perms = string_to_av_perm(p, p->process_class, "transition"); p->process_trans_perms |= string_to_av_perm(p, p->process_class, "dyntransition"); - if (!p->process_trans_perms) + if (!p->process_trans_perms) { + rc = -EINVAL; goto bad; + } rc = ocontext_read(p, info, fp); if (rc) @@ -2472,12 +2482,13 @@ int policydb_read(struct policydb *p, void *fp) if (rc) goto bad; - rc = -ENOMEM; p->type_attr_map_array = flex_array_alloc(sizeof(struct ebitmap), p->p_types.nprim, GFP_KERNEL | __GFP_ZERO); - if (!p->type_attr_map_array) + if (!p->type_attr_map_array) { + rc = -ENOMEM; goto bad; + } /* preallocate so we don't have to worry about the put ever failing */ rc = flex_array_prealloc(p->type_attr_map_array, 0, p->p_types.nprim,