From patchwork Tue Feb 14 13:18:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Morris X-Patchwork-Id: 9571921 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 48F7260578 for ; Tue, 14 Feb 2017 13:19:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3956228417 for ; Tue, 14 Feb 2017 13:19:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2E07D2841D; Tue, 14 Feb 2017 13:19:12 +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=-1.9 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from emsm-gh1-uea10.nsa.gov (smtp.nsa.gov [8.44.101.8]) (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 564EC28417 for ; Tue, 14 Feb 2017 13:19:11 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.35,161,1484006400"; d="scan'208";a="3843955" IronPort-PHdr: =?us-ascii?q?9a23=3Aw+C/BhJHhI7cqPfJh9mcpTZWNBhigK39O0sv0rFi?= =?us-ascii?q?tYgQKPv6rarrMEGX3/hxlliBBdydsKMZzbKO+Pq9EUU7or+5+EgYd5JNUxJXwe?= =?us-ascii?q?43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRp?= =?us-ascii?q?OOv1BpTSj8Oq3Oyu5pHfeQtFiT69bL9oMBm6sQrdutcWjIB/Nqs/1xzFr2dSde?= =?us-ascii?q?9L321oP1WTnxj95se04pFu9jlbtuwi+cBdT6j0Zrw0QrNEAjsoNWA1/9DrugLY?= =?us-ascii?q?TQST/HscU34ZnQRODgPY8Rz1RJbxsi/9tupgxCmXOND9QL4oVTi+6apgVRHniD?= =?us-ascii?q?0DNzUk7m/ZjMJ+h79frB64uhBz34vYbYeIP/R8Y6zdZ8sXS2RBUMhPSiJPAY2z?= =?us-ascii?q?YIQXD+cDIOpVoZXyqVQQohulHgSsGOHixyVUinPqx6A2zeIsGhzG0gw6GNIOtW?= =?us-ascii?q?zZotHvO6cXT++117TDwzLEb/NMwzf96ZPIeQ0mrPGOWLJwdtDRyVMuFwPelViQ?= =?us-ascii?q?r5bqPzaL2eQMqWSb6PBgVe22hmMhtgp/oSCvy98xhoTGiY8Z0FDJ+ThjzIorKt?= =?us-ascii?q?C0VlR3bcO8HJZRtyyWLY97T8c4T211vCs3y6cKtYO6cSULzpks2gTRZOadc4eS?= =?us-ascii?q?5xLuTOORITBli317YL+/nBOy8VS4yu37S8m0zE5GripbndnIsXAAzwDT5dKdSv?= =?us-ascii?q?t840ehwiyD1xzT6+5YIUA0krDXK5g9zb4ripUfq0HDHi7ymEnuja+WcFsr+vSw?= =?us-ascii?q?5uj6bbjrqYWQOo9phg3kLKgjldKzDf4lPgQWWmiU4+W81Lnt/U3jR7VKi+U7kr?= =?us-ascii?q?LHv5DeJMQboLO5AgBM3ok47Ba/EjGm38gGknkcN19FZBKGgJTpO1HJOvz4C+y/?= =?us-ascii?q?jE62nDdkwPDGIKXtAo/RIXjbjLfhYbF95lZeyAo0y9BQ/Y5UCrEbL/L1QULxtt?= =?us-ascii?q?vYDhk8MwOu2ObnFMty1pkFWW6VBa+ZKqzSu0eS5u0zO+mMeJMVuDHlJvgn5f7h?= =?us-ascii?q?l2M2mVwGfamu25sXaW64E+9oI0WdfHrtjcwOEXoMvgoiUezmklqCUSRcZ3yqRa?= =?us-ascii?q?Iz+ik7CJ66DYfEXo2tmKKO0zylEZ1QZ2BGFleMHGzpd4qaRfgDdjieIsh7kjwL?= =?us-ascii?q?TbKhUZMu1QmytA/mzLpqNvfb+ioetZLlydd6+enTlRAp+DNuEcudyWaNQ3tznm?= =?us-ascii?q?MSSD88xLp/rlBlylefzah4hORVGsFP5/xTSAc3LoLTz+t/C9/uQA3BZcuJREyg?= =?us-ascii?q?Qtq4HTE7VsgxzMMWY0ZhB9WiiQjO3yusA78JibOLAII78qfC0HjtPcZ8y23L1K?= =?us-ascii?q?45j1Y4RMtPMHephq979wfIAI7InF+Vl6GwdaQTxCTN7nuMzXKSvEFEVw59SaXE?= =?us-ascii?q?XHEYZkvQttn540fCQ6avCbQhKAdBz9SNKrFJat3ok1VJWu3vONLAbGKtg22wHw?= =?us-ascii?q?qHxquQbIr2fGUQxDvSCFAenAAJ/HaGLhMzBj+7rGLEDTxuDkrvY0f2/uZitny3?= =?us-ascii?q?VEg0zxuFb0d5zbq65gYVheCAS/MUxr8FtiYhqzFxHFmjxdLbENSAqBR8c6Vbe9?= =?us-ascii?q?My+k9H1Xjetwx/IJOvM7xiikQZcwRtsEPkzw93BZlYkcg2sHMqyxJ/KayC0Fxb?= =?us-ascii?q?cTOXwZHwOqbMJ2n35BCvarfa2krQ0daN4KsP7+44q1r7tgGzCkUi62ln08VS03?= =?us-ascii?q?aE5ZXFFgkSUZXsUkss9Bh1vbLaYi4g54/O0n1sK6a0uCfY2901HOsl1gqgf9BH?= =?us-ascii?q?PayeCQDyCcwaCNa0KOExgVemchcEMPpV9K4uMMOsb+GG17KzPOZ8gDKminxK75?= =?us-ascii?q?xn3UKI6SV8UfLI3pYCw/yDxQuISzb8g0mnssDrmIBLfyseHmyhxij4HIRRfLF9?= =?us-ascii?q?fZ4XCWeyJM263tV+iIDpW35c816uHFcG2NK1eRqValzyxxdc1UMNoXyogSG41S?= =?us-ascii?q?B7kyk1rqqD2yzD2//idBQdOm5MX2likUzhIZOyj9AdUkmoahImlB2/6Ub82adb?= =?us-ascii?q?uLx1L3PPTkdQYyj2M2ZiX7O+t7WYZ85P9I0nsT9MUOmnf1CVVKT9rAAH0yPmBW?= =?us-ascii?q?dewyo7dz6ysJXjgxN6kH6dLGp0rHfBZcF/2ArQ5N3GSv5VxTcJWC54iTzLCVem?= =?us-ascii?q?JNmp4c+Yl5HdveCiT2ihTIFccTH3zYOcsyu2/WtqARy7n/C3hNLnChM33jXl2N?= =?us-ascii?q?lwUiXEthH8YpPk166iK+JoYlFoBEPg68p9Aox+jIowi40M2XgdnJWZ52YIkWf0?= =?us-ascii?q?MdVd1qLzd34NRT8Nw9HP+gjl31dvLnWTx4L2Tn+d2NduZ8GmYmMK3SIw98RKCK?= =?us-ascii?q?aP7LxYhCd1uUS3rQbQYfh7gzccxuAj6GUCg+EIvgotzzmSAqsIEUleIyPsiwyC?= =?us-ascii?q?78qio6VPeGavbb+w2VJkndCmCLGCph9TWGzldZclEy599d5/ME/Q333o8I3kf8?= =?us-ascii?q?PQbd0LvB2OjxjAl/RVKI42lvcSnSpoI3/9vXk/x+EhlxBhxpa6vIybK2Vq+qK0?= =?us-ascii?q?GRtYOiHzZ8MU5j7hl6BekdiK34q3BJVuBi0LXIf0TfKvCD8SturoNwCVEDAnqX?= =?us-ascii?q?eUB7zfHRSZ6Eh4s3LDCZerN2uYJHMB19VtWAGdJFBDgAATRDg6hoQ2Fh2uxMP/?= =?us-ascii?q?aEd2/DYR5kLmpRtW0e9oKgL/XXnFpAezcDs0U5+fLAdM7g5e+UjVP8ue7vh8Hy?= =?us-ascii?q?5G5JGhqhKCKnCDbQRSEW4JQlCEB0zkPrS2+9nA9fWXC/GgL/vIfLqOqfZSV/GW?= =?us-ascii?q?ypKzyoFm5SqDNt2TPnl+CP02wlJDUmpkG8TdgDgAVy0Xlz7NbsKCqhez4Ct3ot?= =?us-ascii?q?q48PTxVwLl/ZGPBKdKMdVz5xC2hr+ON+2QhSZ9NzlVzZYMxXjGyLgRwlESlz1u?= =?us-ascii?q?dzmqEbQFqyHBVqTQlbFLDxQDcSN8KNNI774g3glKIcPbhMn61rhkjv4yDldITl?= =?us-ascii?q?Lhld+0aswNOWGyLkvHBFyMNLSEOzLE3933bbm7Sb1Kg+VerwewtiqDE0//IjSD?= =?us-ascii?q?kCHkWA2pMe5WlyyUIRpet5unfhZqE2jjQ8rsagenP99vkT023bo0i2vQNWEBLD?= =?us-ascii?q?dxaExNrrif7C9ChPVwBXBB5GJ/LeaYgyaZ8/XYKpEOvPtxGCh1mfhW4HEgxLtR?= =?us-ascii?q?6yFFROd4lzHOod5ruV2mlfOPyjV/WhpUtjlLnJ6LvVllOajB+JlAQ2jL8w8W7W?= =?us-ascii?q?qKDRQKu9xlCsb0tq9K1tfPkbj/KDBY89Lb5cEcHdTbKNqbMHo9NhrkADjUDBEf?= =?us-ascii?q?Qj6zLWHSnEJdkPCI9n2Ospg6pJnsmJwURb9dSFM1F+kVCkB/ENwFOpd3USsuka?= =?us-ascii?q?SHg84Q+Xq+sB7RSd1HsZDcSP2dG/rvKCyDgrlafBYI2qn3LYcONo3hwUNucF16?= =?us-ascii?q?nJnMG0XKR9BBuzFhbgg3oERN93hyVGsz1Fz5agm1+n8cCea0ngIqigt5eeki7z?= =?us-ascii?q?bs41gwJlrMvyY/jVc+ls7kgT+Ldj79NqCwXZtZCyDsrUg+Lov7QxppbQ21hUFr?= =?us-ascii?q?LjjESKhPj7R+bm1rjxfctoVJGf5ZV6JEYRsQyuqQZ/Qny1hcrT+nxUBf7+vfFZ?= =?us-ascii?q?RijBcqcYKrr39YxwJja9s1KbbKJKpOz1lfmKSOsTSy1uA23gAeJF0A/3+VeC4N?= =?us-ascii?q?pEMHLKImJzay8uxq9wOChyNJeHIQWPoyvvJq6kQ9NvyGzy3+ybFDLlu8N++YL6?= =?us-ascii?q?OCp2jPj8iIQkgz1kMJjUVF+6Z50ds7eUqOS08v1KeRFwgONcfaMwFacdFS+2bJ?= =?us-ascii?q?ciaUrerNwYl4MJ68FuDyUOCOs6gUglq+HAk3H4UA9MIBEYew0EvAN8foMKYFyQ?= =?us-ascii?q?kx5ATsPFiKEe5GeAyKkDgauMGy14V43ZNHJjEaD2R9Kju46arKpg8wgfqDQNc3?= =?us-ascii?q?bm0cXoQaKnI8QNe6lDJBv3RcEDm31foUyAyF7z/muCvQCjj9b914afebYxNsFc?= =?us-ascii?q?u6+TIl86i5kVTX6InRJ3nmNdR+vd/C8fgaqIiDC/NVS7l9rkjdlpJESHytVm7A?= =?us-ascii?q?DcS6J4Psa4U2a9z7FGq6WESliz0pV8fxIMqtLq+QjA71WYlUtY6b3DY/NcOgDT?= =?us-ascii?q?weBQl/p/sC5KN9Yg0DZYA3YRj2uAQiL6a/OhuX0s2yQ2axLjtbV/pfzf+6ZrNN?= =?us-ascii?q?ySoscu+6xWAvTpE91+m47VQBRJcUgRHC3fyjfZVRUTDvGnxBfAXCvTY5l2lkNu?= =?us-ascii?q?Y13uc/wBPJvEIBPDCKdO1mcndLs8s6BVyMPXV8EnA4SEOEjYrf/g6s2Kgf/yRH?= =?us-ascii?q?n9lO1+1FrGPzvp7YYDOiXqyrtZXVvDQhbdggv61+L5bjLtGAtJzAgjzVVIPQvR?= =?us-ascii?q?GdUC6mC/pancBdLzhcQPlJhW4qJ9QJuY9B6Eo3Ucc+IaZABbI3qbCrczVkCzce?= =?us-ascii?q?zSEEV4+a2jwNnPu80aPAlhiMaJQiLAAEsJJaj9QGTSF2ZDgTq7W+WIXIiWCEUH?= =?us-ascii?q?MLLx0J7QVM/g4AkZVwfu/96orSUJBM0yJWo+5zUibTDJlo8Vr7RX2WgVj/TPWh?= =?us-ascii?q?iPSn0xtPwvz2ztQVXwVyBlRax+ZTikQnMqp3K7UKso7MrDCIaVvwvHjxx+u+OF?= =?us-ascii?q?lR1crUekXkA4rHr2XzTjYR9mETRY9LzHHfFIodkxBlaKk1uFpMIJqqekHk5zwr?= =?us-ascii?q?345pBaW3Vdi3x1Y5qnYLXz2qHMBbC+Fhq13aQyFlY4qxp5X7JZpSRm5Q+JuSq1?= =?us-ascii?q?ddkUVtPC65yYZSK85X+D4MWSJDoTODs9uuUMdDw9N5D4cQItdjvHfwAK1FNIKN?= =?us-ascii?q?rH02u7zvz37Z9Co/sFqhxTW8BbG3QPxD820ZAAUpKHyUqlMzAOs07mfS7lfNv0?= =?us-ascii?q?hs/+dcAriAl19xoTh6HpBKCDZEznWlL1N0THldrepVNL7Vc8tHQ/kpZB+vPRM+?= =?us-ascii?q?GeQh30yT8kF+hW35bDBqtgtG5yDdWBE5WjMPgrfwnz0SsMKnNCQbS5JJbDUhcz?= =?us-ascii?q?zKJxidmS9JoBZVc1tqVIwBAtZZ57Eb2pNZ/tbFSUapMiwFQABuNgcj3vZFk05M?= =?us-ascii?q?rlmYczjHDQW0bfbPrgF3fcCJoc6pNvv55h1Iiof6v+0j6qoMWWWmmRWzTtDasY?= =?us-ascii?q?D8rMeGtkyUdKf3K+e8e2POTCDQjRCsgrcpF5vK/y/NPwdANpZ112Ekbob7CW7X?= =?us-ascii?q?IxtJOrgXJ0xFWqBmcd9GuPxVZ9d4eKYV/q9gHgmIRh3zF4CzrvRKM1jeSC/CIC?= =?us-ascii?q?WG9+ywvZjc7afBSeT6YMyD2WrHSbptPphm8Tn7B6vq0YhG90rsxPhi60N6RkLa?= =?us-ascii?q?My2aqNThIR0L69e8ekT+uZ0mAC3ZDI12kHXz2kFKb9AXTDGy8JQE1JNZ7279Sf?= =?us-ascii?q?pj0kjvquJd6qVk5JIs47Bu1Me0P7vdJupcsU97GBibHAFq+o8qAGhlSGBbevUR?= =?us-ascii?q?J+vJfaQFkcDurPj6F7AN6BKL5eNWdMDKJ1zFmsmjEDGTUwJEnAYGqT4eMAScy+?= =?us-ascii?q?SJm6huScaqveL5wF4i40CiLh4ay7Bg/YKE9bCMpO/TcRTR0aQEVbLwSc7oqLQj?= =?us-ascii?q?pV+S5eY4m7EUYmx6fRerEO4DWc4B3m3g17wlzTowE8PfGLLt4PxDWGgjnjLngJ?= =?us-ascii?q?B9G08ZGu0PELqO4IRemns4m+3FOd0XaK9CnH2PGQSjEr8Yxn6h8zGXL3V9ghHS?= =?us-ascii?q?zxHwRnu+7F3soi9+TyvM1dDjnVdLWbSsGUddRSypOVR/sD+VOgrnqsb3s7wv7E?= =?us-ascii?q?4qKmzkqM6NlGy5NbNYAs3/JdicIS0qq1ISl5A+W8Kg1psaGdWnJtcd6nZ+buHR?= =?us-ascii?q?62mziS9Ov79Hh5bC4sGS4vjXG32ggrabq7WLwTBU0Hk4vVcx6tC6LP7O/MGKQ+?= =?us-ascii?q?6112kNUyd/phHBUACvprzctVAUNlSB0F3Xl4wSItFZwX4421nj5OgkRtIz6Ape?= =?us-ascii?q?GZjbavMHpDD8Ij30zkiDY9M5USmeyThXHknvHVl+Bqc8xHr6vNjVmnfI510oWo?= =?us-ascii?q?5welTjhRxsCoU1KVkg6FYJzSUeFggNcwqUDKmyBUTiL4sLS1QMaQid0Li9YKc3?= =?us-ascii?q?0lV5wqmz6+/Lcex8G60NO+5GjgGUglhUAJ0WvrMFQL9nYF9S7rDXqRLtC4f5RP?= =?us-ascii?q?jqj3wwOuOpQspC68AWq2Mi4hqjRxqn8ZpD7bcbiJWTe65Bf5fNvN5z711m5T4J?= =?us-ascii?q?eSxBmh5/gA2lUeoEvuDs/sDbsIa06uapTKstRuQW+AIuCGtilJbwm04soc3J2O?= =?us-ascii?q?hAUIHVjp7/8A9VKX6QpInaywV8KfYJK4+zZ7lg9m4HJiYEKHIMPNqWd+E87DVw?= =?us-ascii?q?MDXX/FFNHsQMas4GM8XXhABUkErpWKtJ+cbBHV+YEYhzfdgy72Xr0DA17Yc8Uu?= =?us-ascii?q?H45T+uP5/f801CP/NNjSVrjtLCp/EZweHMBygT4HmZbQV1wyyZxpmVEfnw4fmD?= =?us-ascii?q?yNHaVlMBBC42UJ1RJDmc9gy9QOq6ipHpXhmT6s/pj5I0bFiQSWCpnKQZrqZMFv?= =?us-ascii?q?ZNijnh3jdAEoD6nfSVvMS35WRKt11HH4dz7QHfF6VEJJp7Iwn4mtOtRkdiGiv1?= =?us-ascii?q?YNvUeQY2uOqK2ucM5P1zN0Tkao8BPB0E17L65GFRTgtvVL75oFaZUvgMZNt9Uv?= =?us-ascii?q?/EqG5a6Z54Ia8VIFedvIDqritPqF0uDw8mdrkwriBddknJmwFVQLj7uLoBigsa?= =?us-ascii?q?TN54tlRBGWauN2Ik5zvIT75ZjK+PB/wJ6j+TVLABU110MiNiRBO4wJNue7q1kv?= =?us-ascii?q?BAtmNJhDh9rOIr0zxhQxu8ojbsqrkI2T8v97C0rjIBuWZKTu+GiSfHFU1DzOgW?= =?us-ascii?q?jacbE3vi5kCzYGIYbIfr/bdpKsLu9Ygn43QibhQuZCIGXeG6BCH2kayEGIuPsM?= =?us-ascii?q?hThBSVosXBcaezLTQONrQ60R/jRX990gjYnBpy7GQLQjGg7MI5K4S8OMYlwDGo?= =?us-ascii?q?GWvadFsX/KNJsdXxukQPTOQraFNt2mNj3dabRicVXszAB341jhQ4aWVDaJ9D6A?= =?us-ascii?q?EaGLMugjuTuqlG4xwbYDbTEoS+4IXQmt3I2XYlR9dw2m3WvrGFho8t0HB9mdN7?= =?us-ascii?q?8CCOuHoWd+HDXc5jGH7z2ZlDyeDkYfWirPwHQpN8yLu9SP8CLtWj+Wyu1ZVlXk?= =?us-ascii?q?+lwbofEES9MO8H3brbSCClSWuZWeuXaWSMmSg2MlLq7xmyMlI3cNtKr1M6Muba?= =?us-ascii?q?hJ5clw3gUatzRiWUpF/b0HIsPPgfdwI3pIenYRIFQPQWZ+iGKugk2Oc+B0cUb3?= =?us-ascii?q?/VASt2DPe7sUKsnIh+IHhg/UT6bvju8g/4NNueAB8EHpDGrpRp4/y1WnqBOWN8?= =?us-ascii?q?zB11JER08ubfF1cytu9baJuRn8Lfh9d80e4DafhtNzcxutgNlYJ/8YOUytuFcQ?= =?us-ascii?q?nNzpbuItHYuuOXDOPZz0Q2YWxaSb4ZYQTp54UmIN42RaDcEaFevRQGCqgwWIYh?= =?us-ascii?q?OHvp9KFoMANzdRbcZLqqjcnup+KLfoVbqmTX71IxKSfcvgMMyuawTQNldZyqgG?= =?us-ascii?q?/yIJ8oTDJbs9JtEgdmHJdIG84YoQunG4SUmKCnhNCv4E56vu4KsbbqCv/Uzti5?= =?us-ascii?q?2J9xX5dC70yRIDnRHLVrglhijumqhffA1of+BNj6edMATud7WXLFar7aEYWjMD?= =?us-ascii?q?KBJNzzd1RA87GCzLJzSg+RazzhX6qaqC2kM+1p4UE6yox+YerSwyUh77Xa2Nvp?= =?us-ascii?q?e2FbvTyurX+TO5tZ61zGH+veXwhbSfCd6mZqAbUXbZfo9OcJKdEi28aT4w1y7D?= =?us-ascii?q?REzcuELK+toEDQ2kJ7a53bNlXm2z4jVoQRIxSwL1EsgWnHpXTZGntcM8ekJdNq?= =?us-ascii?q?gNaPARzn/1Nxln01Zm5dBmroQs+cOW0B1M2iZA2K9QRLD9EYku6peE44sLO9Se?= =?us-ascii?q?1pOpVDhOWru68LkdFzKyHAXMJaJT3fLKdqPjpNCeXCvFoobQQHs7gyQYg4foWO?= =?us-ascii?q?IEUbMEeAziPy0ATC0U3od9C20qaGPjoW+G1dz73ZyThMuxW5ufGBj8L4S7/Va5?= =?us-ascii?q?X2XP/JMCo5TTGWXy8yHli19lu+oPoLov6YIWYZolAJbSOfExIcp6B1rdjNFW/f?= =?us-ascii?q?g+Nic4cWhPCBXCDwTjd0lK0oBiZErUqMWeYMFRHKb3/9h2pRoAOiKeVX8nL/br?= =?us-ascii?q?2X2K5VVvcIAotIaPKZWNrYee1EKzcuiDoZJP62f8fAoLYhzlLIUWwZHrHK9F2b?= =?us-ascii?q?S06WWOacxzPwXYgOuYg7oC8o9czRniNtFKTIJbmfrSa08oGklCaYpfHeVm41bk?= =?us-ascii?q?wujuICBXWOzRhDJWwfFdEaplvtQq+BZkZL0nIlk+Ru1AEQeA5rSH1hzmVWnOqh?= =?us-ascii?q?Gs1eUVMUjmSuQPsCbF1sCTM/41KF4gP1Ydwapc/cWXVS9r0SRooBf7EU79zTOa?= =?us-ascii?q?0N0LMy0Tl7ui0momCYCF9Aig+t7aXdBuR/y6dE6G1++Ot5DW+VRDaKUGHCx5Hu?= =?us-ascii?q?LsVV3yZ16STm0s3OpOF2HL1Toox4RlAQDnQldZjm4TldXDSsi0OJtBGhEWHbeW?= =?us-ascii?q?oU?= X-IPAS-Result: =?us-ascii?q?A2H9AwB1A6NY/wHyM5BeGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBgyeBao5TkH2XWiaFfgOBeFcBAQEBAQEBAQIBAl8ogjMbgiMCN?= =?us-ascii?q?xQgCwMDCQIXKQgIAwEtFR8LBRgEiUqxHiYCi2eGTIINhwgRAYJoDIMNBZtykhS?= =?us-ascii?q?KVoYvSJJNWHgIIBQIIgg9hEUdgXVhAYdygi0BAQE?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea10.nsa.gov with ESMTP; 14 Feb 2017 13:19:09 +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 v1EDJ7ff008440; Tue, 14 Feb 2017 08:19:08 -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 v1EDJ6Bo060958 for ; Tue, 14 Feb 2017 08:19:06 -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 v1EDJ2eZ008433 for ; Tue, 14 Feb 2017 08:19:06 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1BMBAAlA6NY/6bEY0FeGwEBAQMBAQEJAQEBg1KBap9Qk0aEGxqGCIF2VwECAQEBAQECYoVSP4FRiWuxHowPhkyCDYoCDIMNBZtykhSRBUiSTVeBACAUCCIIhQIdgXUsNQGKHwEBAQ X-IPAS-Result: A1BMBAAlA6NY/6bEY0FeGwEBAQMBAQEJAQEBg1KBap9Qk0aEGxqGCIF2VwECAQEBAQECYoVSP4FRiWuxHowPhkyCDYoCDIMNBZtykhSRBUiSTVeBACAUCCIIhQIdgXUsNQGKHwEBAQ X-IronPort-AV: E=Sophos;i="5.35,161,1484024400"; d="scan'208";a="5943233" 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; 14 Feb 2017 08:19:05 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3AC9GKChJrL3DCxiXuRNmcpTZWNBhigK39O0sv0rFi?= =?us-ascii?q?tYgQLf/xwZ3uMQTl6Ol3ixeRBMOAuq8C07Kd6f2ocFdDyK7JiGoFfp1IWk1Nou?= =?us-ascii?q?QttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZr?= =?us-ascii?q?KeTpAI7SiNm82/yv95HJbQhFgDqwbaluIBmqogndqMkbipZ+J6gszRfEvmFGcP?= =?us-ascii?q?lMy2NyIlKTkRf85sOu85Nm7i9dpfEv+dNeXKvjZ6g3QqBWAzogM2Au+c3krgLD?= =?us-ascii?q?QheV5nsdSWoZjBxFCBXY4R7gX5fxtiz6tvdh2CSfIMb7Q6w4VSik4qx2ThLjlS?= =?us-ascii?q?UJOCMj8GzPhMJ+jLxVrg+iqRNxzIHbfJqYNOZicq7HYd8WWXBMUthXWidcAo28?= =?us-ascii?q?dYwPD+8ZMOhctYb9okUBrQCjDgerA+Pv0CVIhn7t3aYn1OkhEwTG3As6H9IUsX?= =?us-ascii?q?TUt874NKEIXuCw0qbIzC/Pb/RM2Tfy8YXFdA0qr/KUXb9ocMfcyVMjGgfBg1mK?= =?us-ascii?q?tIDoOzKY2v4Qv2Wa7udtU/+khXQ9pAFruDevw98hionXiYIRzVDJ7SN5z5wwJd?= =?us-ascii?q?KmSU53e9mkEIFfty2CNot2RN0tQ31wtSs7yrAKo5q2cSwQxJg6wxPSauaLf5WJ?= =?us-ascii?q?7x/iTOqRJC13hHNheLKxnRay9k2gx/X+Vsmx11ZKtDBFktjXtn0W0Rzc8M2HRe?= =?us-ascii?q?V8/ku73jaPzQ/T5vleIU8ojarbN4Ihwrkom5oIr0vDGi72mEPrjK6ZbUgk5uip?= =?us-ascii?q?5PjnYrXhvJOcMZR0hRvkPqQhncy/H7dwDg9bW2md5PT5z7Do4Ff4XKQPi/o6j6?= =?us-ascii?q?3UmI7VKN5dpaOjBQJRlIE55EWRFTCjhfYRmHQcZHdCYgiGlMC9OVTJOur5Ft+5?= =?us-ascii?q?ilGhkXFs3f+Qbe6pOYnEMnWWyOSpRr168UMJkAc=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0GqBAB1A6NY/6bEY0FeGwEBAQMBAQEJA?= =?us-ascii?q?QEBFgEBAQMBAQEJAQEBgyeBap9Qk0aEGxqGCIF2VwEBAQEBAQEBAgECXyiCMxm?= =?us-ascii?q?CXj+BUYlrsR6MD4ZMgg2NGwWbcpIUkQVIkk1YgQAgFAgiCIUCHYF1LDUBih8BA?= =?us-ascii?q?QE?= X-IPAS-Result: =?us-ascii?q?A0GqBAB1A6NY/6bEY0FeGwEBAQMBAQEJAQEBFgEBAQMBAQE?= =?us-ascii?q?JAQEBgyeBap9Qk0aEGxqGCIF2VwEBAQEBAQEBAgECXyiCMxmCXj+BUYlrsR6MD?= =?us-ascii?q?4ZMgg2NGwWbcpIUkQVIkk1YgQAgFAgiCIUCHYF1LDUBih8BAQE?= X-IronPort-AV: E=Sophos;i="5.35,161,1484006400"; d="scan'208";a="3843951" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from namei.org ([65.99.196.166]) by emsm-gh1-uea10.nsa.gov with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Feb 2017 13:19:04 +0000 Received: from localhost (localhost [127.0.0.1]) by namei.org (8.14.4/8.14.4) with ESMTP id v1EDIptu000450; Tue, 14 Feb 2017 13:18:51 GMT Date: Wed, 15 Feb 2017 00:18:51 +1100 (AEDT) From: James Morris To: linux-security-module@vger.kernel.org Subject: [RFC v2 PATCH 2/2] security: mark LSM hooks as __ro_after_init Message-ID: User-Agent: Alpine 2.20 (LRH 67 2015-01-07) MIME-Version: 1.0 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: selinux@tycho.nsa.gov, kernel-hardening@lists.openwall.com Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP Mark all of the registration hooks as __ro_after_init (via the __lsm_ro_after_init macro). Signed-off-by: James Morris Acked-by: Stephen Smalley Acked-by: Casey Schaufler --- security/apparmor/lsm.c | 2 +- security/commoncap.c | 2 +- security/loadpin/loadpin.c | 2 +- security/security.c | 2 +- security/selinux/hooks.c | 2 +- security/smack/smack_lsm.c | 2 +- security/tomoyo/tomoyo.c | 2 +- security/yama/yama_lsm.c | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c index 709eacd..e287b69 100644 --- a/security/apparmor/lsm.c +++ b/security/apparmor/lsm.c @@ -587,7 +587,7 @@ static int apparmor_task_setrlimit(struct task_struct *task, return error; } -static struct security_hook_list apparmor_hooks[] = { +static struct security_hook_list apparmor_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(ptrace_access_check, apparmor_ptrace_access_check), LSM_HOOK_INIT(ptrace_traceme, apparmor_ptrace_traceme), LSM_HOOK_INIT(capget, apparmor_capget), diff --git a/security/commoncap.c b/security/commoncap.c index 6d4d586..a9db18c 100644 --- a/security/commoncap.c +++ b/security/commoncap.c @@ -1070,7 +1070,7 @@ int cap_mmap_file(struct file *file, unsigned long reqprot, #ifdef CONFIG_SECURITY -struct security_hook_list capability_hooks[] = { +struct security_hook_list capability_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(capable, cap_capable), LSM_HOOK_INIT(settime, cap_settime), LSM_HOOK_INIT(ptrace_access_check, cap_ptrace_access_check), diff --git a/security/loadpin/loadpin.c b/security/loadpin/loadpin.c index 1d82eae..dbe6efd 100644 --- a/security/loadpin/loadpin.c +++ b/security/loadpin/loadpin.c @@ -174,7 +174,7 @@ static int loadpin_read_file(struct file *file, enum kernel_read_file_id id) return 0; } -static struct security_hook_list loadpin_hooks[] = { +static struct security_hook_list loadpin_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(sb_free_security, loadpin_sb_free_security), LSM_HOOK_INIT(kernel_read_file, loadpin_read_file), }; diff --git a/security/security.c b/security/security.c index d0e07f2..75ed309 100644 --- a/security/security.c +++ b/security/security.c @@ -1622,7 +1622,7 @@ int security_audit_rule_match(u32 secid, u32 field, u32 op, void *lsmrule, } #endif /* CONFIG_AUDIT */ -struct security_hook_heads security_hook_heads = { +struct security_hook_heads security_hook_heads __lsm_ro_after_init = { .binder_set_context_mgr = LIST_HEAD_INIT(security_hook_heads.binder_set_context_mgr), .binder_transaction = diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 9bc12bc..b1a9916 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -6104,7 +6104,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer) #endif -static struct security_hook_list selinux_hooks[] = { +static struct security_hook_list selinux_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(binder_set_context_mgr, selinux_binder_set_context_mgr), LSM_HOOK_INIT(binder_transaction, selinux_binder_transaction), LSM_HOOK_INIT(binder_transfer_binder, selinux_binder_transfer_binder), diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index 60b4217..71e24d8 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c @@ -4633,7 +4633,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen) return 0; } -static struct security_hook_list smack_hooks[] = { +static struct security_hook_list smack_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(ptrace_access_check, smack_ptrace_access_check), LSM_HOOK_INIT(ptrace_traceme, smack_ptrace_traceme), LSM_HOOK_INIT(syslog, smack_syslog), diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c index edc52d6..b5fb930 100644 --- a/security/tomoyo/tomoyo.c +++ b/security/tomoyo/tomoyo.c @@ -496,7 +496,7 @@ static int tomoyo_socket_sendmsg(struct socket *sock, struct msghdr *msg, * tomoyo_security_ops is a "struct security_operations" which is used for * registering TOMOYO. */ -static struct security_hook_list tomoyo_hooks[] = { +static struct security_hook_list tomoyo_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(cred_alloc_blank, tomoyo_cred_alloc_blank), LSM_HOOK_INIT(cred_prepare, tomoyo_cred_prepare), LSM_HOOK_INIT(cred_transfer, tomoyo_cred_transfer), diff --git a/security/yama/yama_lsm.c b/security/yama/yama_lsm.c index 88271a3..8298e09 100644 --- a/security/yama/yama_lsm.c +++ b/security/yama/yama_lsm.c @@ -428,7 +428,7 @@ int yama_ptrace_traceme(struct task_struct *parent) return rc; } -static struct security_hook_list yama_hooks[] = { +static struct security_hook_list yama_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(ptrace_access_check, yama_ptrace_access_check), LSM_HOOK_INIT(ptrace_traceme, yama_ptrace_traceme), LSM_HOOK_INIT(task_prctl, yama_task_prctl),