From patchwork Fri May 4 20:54:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Guy Briggs X-Patchwork-Id: 10383987 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 5FDA660159 for ; Mon, 7 May 2018 12:36:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 42C6828AF7 for ; Mon, 7 May 2018 12:36:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 374A828B0B; Mon, 7 May 2018 12:36:30 +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.2 required=2.0 tests=BAYES_00, MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=unavailable version=3.3.1 Received: from UCOL19PA10.eemsg.mail.mil (ucol19pa10.eemsg.mail.mil [214.24.24.83]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A3EA928AF7 for ; Mon, 7 May 2018 12:36:18 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.49,373,1520899200"; d="scan'208";a="507263746" Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.2]) by UCOL19PA10.eemsg.mail.mil with ESMTP; 07 May 2018 12:36:15 +0000 X-IronPort-AV: E=Sophos;i="5.49,373,1520899200"; d="scan'208";a="11484660" IronPort-PHdr: =?us-ascii?q?9a23=3AoGznKh9SQchUTv9uRHKM819IXTAuvvDOBiVQ1K?= =?us-ascii?q?B50+MVIJqq85mqBkHD//Il1AaPAd2Araocw8Pt8InYEVQa5piAtH1QOLdtbD?= =?us-ascii?q?Qizfssogo7HcSeAlf6JvO5JwYzHcBFSUM3tyrjaRsdF8nxfUDdrWOv5jAOBB?= =?us-ascii?q?r/KRB1JuPoEYLOksi7ze+/94HdbglSmDaxfa55IQmrownWqsQYm5ZpJLwryh?= =?us-ascii?q?vOrHtIeuBWyn1tKFmOgRvy5dq+8YB6/ShItP0v68BPUaPhf6QlVrNYFygpM3?= =?us-ascii?q?o05MLwqxbOSxaE62YGXWUXlhpIBBXF7A3/U5zsvCb2qvZx1S+HNsDtU7s6RS?= =?us-ascii?q?qt4LtqSB/wiScIKTg58H3MisdtiK5XuQ+tqwBjz4LRZoyaOuB+fqfAdt0EQ2?= =?us-ascii?q?RPUNtaWyhYDo+hc4cDCuwMMuFEoYf9uVYCtAKyCwuxC+P10zNGm2L23bYi0+?= =?us-ascii?q?s/DQ7GwBUsH9YJsHXasd75MKcfXeWzwabP0TvNb+1b1S7k5IbKbx8hu+iAU6?= =?us-ascii?q?9tccrK0UkgCR/KjkmNooDhIT+ZyuEBvm6G5ORiSO2vkXYqpQFvrDahxckjiI?= =?us-ascii?q?fJiYAbyl7Z7SV0wps5KNOmR05getOoDIdcujuGO4dqXs8uX2dlszs6xL0cvp?= =?us-ascii?q?67eTAHxogmxxHDa/yIaZKI7Q/+X+iQPDd5hG9uda+lhxaz/kigxfb8XdSz3V?= =?us-ascii?q?ZQoSpKicLBtmoT2BPO6siIUOd98l291jaI0gDe8+dJKl03m6rDM5Mt37E9m5?= =?us-ascii?q?UJvUnDAyP6glv6gaCIekk+5+Sk8+Xqb7T8qpOBNIJ5iBvyProgl8GxG+g1MA?= =?us-ascii?q?YDUm6G8uqmzrLj51f2QLBSg/0zlanWrY7VKNwApq68Hw9VyoEj6wujDzu+0N?= =?us-ascii?q?QXg30HLFVddRKblYfpIVDOIO3jDfuln1StkCtkx/DBPrH7BJXCMmPDn6v7cb?= =?us-ascii?q?Z46k5czBI/zdFZ551KFrEMOO//V0D+udDCDhI1Lha4z/joBdljzI8SRHqDAq?= =?us-ascii?q?qDP6PTtV+I6PgvI+6JZIINozbyNfwl5//ojX8kll4RZLKm3ZwKaHC+AvtpPV?= =?us-ascii?q?6ZbGHwgtYBDWgKvg0+QPbsiF2ZSzFffXmyX6Ui5j0jEoKpEZ/DRpyxgLyGxC?= =?us-ascii?q?q7HJpWZmZcBVCQEXfnbYOEVuwOaCKVJM9hlyYLVaO9S4A/zxGurxX2y719Lu?= =?us-ascii?q?rb4icYr47s1MBp5+3PkhE/7T50D8aH3G6RTGF0hWQIRzk33KBhukF9xFOD0b?= =?us-ascii?q?V3gvNDCNxT4e9JUhogOZ7b1ex6BMj4WhjdcdeRVFamXtKmDCk/T9Iwx98OZl?= =?us-ascii?q?hyG8+5gxDNwSWlHrgVl6aRC5ws6KLc2HrxKNhhxHbazqUhiEMmQsRXP228mq?= =?us-ascii?q?F/7xTTB5LOk0iBiqmlaaEc3CnL9Gef0GaDp19YXxBqUaXEXHEfYU3Woc7/5k?= =?us-ascii?q?zcU7+kEa4nPRdZyc6eNqtKbcXkgkhaRPj5ItTTeH6+m2C1BRmU3LyMd5bqd3?= =?us-ascii?q?8b3CrDFEgOixoT8mqeNQgiGiehpHrTAyJ2FV31eUPs8PJ+pWijTkAu1QGKbl?= =?us-ascii?q?Zh16Kx+hEPmfOTVekf3rUeuCcusz90Bkqy38rKC9qcoApsZKVdYNI64FdBzm?= =?us-ascii?q?/Zsgh9MoWhL6BknFIedR54v1nt1xV2FIVPj9ImrHU0wwpuMaiYyk9OdyuE3Z?= =?us-ascii?q?DsPb3aMmfy/Aq1ZK7Qxl7e0c2W97wK6PQgqlXvpRqpF0Q583l91NlVyXSc7I?= =?us-ascii?q?3QDAUOSZLxTlo39x9iqrHZeCY95ITU1WB3PKm3qDDC2NUpBPY/xhanZddfP7?= =?us-ascii?q?uOFBXuHM0CG8iuNOsqlkCzYR0ZJuBS9bA7P9m9evScxKGrOfxsnDW8jWRI+I?= =?us-ascii?q?p9yF6D9zJgSu7U2JYI2+uY0RaaWDrng1eht8/2lZpCZT4MAmq10TLkC5JJZq?= =?us-ascii?q?1uYYYLDn+jI9a5xtVkgJ7tQGJY+UW4B1MA38+odx+SYEb73QFK00QYv2Cnkz?= =?us-ascii?q?OizzNoizEpsraf3CvWzuXsbhUHPnJLS3d4jVf3OoW0kc4VXFKzYAg0kRup/0?= =?us-ascii?q?H6x7JUpK5nNWncXV9IfzTqL2FlSqawsLuCY8pL6Jw2qiVaS/6zbk6ASr76uR?= =?us-ascii?q?ca1DnjH2RGzjAhaz6qoon5nwB9iG+FMnZzrWbWed13xRfF/tDTWf5R3j0ARC?= =?us-ascii?q?l3kjTXAlm8P9+z8tWOkJfPqOe+V3iuVpdLaynk0ZuAtDen5W1tGRC/m/Gzms?= =?us-ascii?q?b7EQQjyi/0yd1qVSTOrBbhbYjmzL+6MfpmfkluBV/z99F6Fpt4koQumJEawW?= =?us-ascii?q?IaiYmN/XobjWfzNs1W2bj5bHoJQT4E3cTV7xTi2ExtNX+J3J/5WWmGwsd7YN?= =?us-ascii?q?m6eGwW0Don789WEKeU8KBEnSxtr1q7sw3RZ+N9kyweyfQw7n4amOcJtxQxzi?= =?us-ascii?q?mHBbASB0ZYNzT2lxuU99C+sLlXZGG3fLiozkV+gNShA6+aog5GXnb5ZoktHT?= =?us-ascii?q?Vr48ViK1LDzmfz6pr+dNnLatITqweUnAvegOhbL5IxjPUKijR9NWL7o3Il1/?= =?us-ascii?q?YxjQZy0pGioIiHN2Jt8bqnAh5eKzL4fN0T+jfwgqZehMqW2Z6gHol5EDURQJ?= =?us-ascii?q?ToVe6oEC4Vtfn/LwaBCiA8qnOAFLXDHA+f9Edno2vBE5+xMXGbPn4Zzc9tRB?= =?us-ascii?q?OFPkxQnBgUXCkmnp4+Dg2qytbucEFl5jAW4171sRVMxfx1OBn4SGfQvh+oai?= =?us-ascii?q?0zSJidMhVZ8h1C613SMcyE4eJ5BztY8YG5rAyRNmybYBxFDWQTVUyAA1DsIK?= =?us-ascii?q?Wu5cXa/OeCHee+KeXBYamVqeNCTfiI3Yyg3pFg/zmSKsWFJmNiAOEj2kpfQX?= =?us-ascii?q?B5HNzUmzsVSyMJii3NdNSUpBGg+i1wtcCy6+7kVx7q5YeVDLtSK9pv8Qisga?= =?us-ascii?q?ifL+6QmDp5KTFA25MK33/H0qAf3EYJhiFgdjmtC68AtTLDTKLRnK9YFRgbZD?= =?us-ascii?q?9yNMRS66IwxA5NOdTUitntzL53kuY1C0tZVVzmgsypfdIFLHqjO1PBBUaLKL?= =?us-ascii?q?OGKCbKw87pf6yzV6dcjOJOtx2/oTybCVPsPiyflzn1UBCiKfpDgzqcMBxauY?= =?us-ascii?q?G9aQptCXP5QNL9dBK0LMV7jSYozr0wh3PKM3McMDdnfkxRrryQ9z5Ygu5lF2?= =?us-ascii?q?1P9HVlMfKEmyGf7+XCLZYWq/RrCDxul+1G+HQ616dV7CZcSfNumSvSodluo1?= =?us-ascii?q?e9n+aS1DVoSxtOpSxNhI6RukViI6rZ/IFaWXnY5BIN8XmQCxMSqtR/Bd3gob?= =?us-ascii?q?5QxcbUmaL0MDdN7dTU/c4GCMjVLMKIK30hMBXzFD7TFgsFQiahNXvDiExFjP?= =?us-ascii?q?GS6nqVo4AmqpjrnZoCUKVbVFs0F/wEDERqB8YCIJBpUTMnirOUkMkI5X+iox?= =?us-ascii?q?bLX8VaoorLVvSMDvXzMDyZl6VLZwMUwbPkKoQeLo/720xia1lim4TKH0vQXc?= =?us-ascii?q?xTrSB6aw80oVlN8GJgQWEp3ELlcAyt6mcJFfGohh42lhd+YeM1+Tfv41Y3Ik?= =?us-ascii?q?TFqTA1kEk2l9Xljy6ecCLtLKewWoFWDjT7u1I3MpzlXwZ/dReyklB8NDfYW7?= =?us-ascii?q?JRiKNtdWZ1hwDGvZtCAv1cTapfYB8M3/6XYe4o0Vddqim9w09I+/fFA4N4lA?= =?us-ascii?q?Q2aZ6ss25A2wV7Yd4vO6PQP7RGwUJKhq2Svi+lzfs+wA4EJ0kQ92OSdjYIuF?= =?us-ascii?q?YWObgmPSao+PJj6RCakTtZZGcMT+Yqou5t9k4lJuuAyCTg07heJU+vM+yfLr?= =?us-ascii?q?iUtHLems6SRVM8zEQIl1NK/bJuy8csb1KUV1wzzLuWDxkGKNDNKR9Ub8VP73?= =?us-ascii?q?jeZjyBsf/XwZJyMYS9Df7nQvOTtKYOg0KkAAYoE54K7ssfApmmyFvYItv/LL?= =?us-ascii?q?4Z1RUt4xzmJFGCDPRTZh2LljYGo8akwZ9424ldOysRAWJnMSW4/rzXvBMlgO?= =?us-ascii?q?KfXNcqZXcXRpAEOWwyWM27nS5ZontBASKr3eIezQiN8yXzpj/MDDXmadpseu?= =?us-ascii?q?uUbwt2CN6q4TU/77S2iVnP/5XCJmH6MNNiusPP6eIavJuIFvJUTLlnvEjHgY?= =?us-ascii?q?VYQWKlU3LXG96vO5fwc5UsbcDzCnuiSFO/jzM1QNvvM9m1K6iJgQfoRYFSsI?= =?us-ascii?q?aBxz0sLs69GSsYGxtpqeED+bhwZQsdbJoneRTorRgxN7SjIAeE1dWjW32iJi?= =?us-ascii?q?VQT/RE1+q1eqJXwDQ2bu+h0nQgVJE7w/Ow8U4XS5EAlgveyuq7Z4lCTSjzHW?= =?us-ascii?q?RQewrSpSo4k2hhMvg9wuIkzRzVr1YTKDGLe/ZvaGBeuNE8H1ySK21sCmUkX1?= =?us-ascii?q?+ckZbD4gm00rAI+Stdnspb0e1CsHj6pZ/ReCuiVrGxp5jJtCQtdsQpo6p0MY?= =?us-ascii?q?P/OMSGr4/ekibZTJbOrg2PSDS6GOZCmthMPCJYR+FFmXs/NswcvopO8lE8Vt?= =?us-ascii?q?skJ7NVFqkjuLSqaTtiDS4dyS8ZVoyA3DwegueywbTajBKQfI4kMBMarJVIms?= =?us-ascii?q?EdXDJuYiMCuK+jUJ3blmGeRmcXIAcT7AFM5AMamY9zZe3l4ZTHQ4FSxDJMpP?= =?us-ascii?q?J0SCTLHIFy91TnUmGWnUT4SPK5nuysxw1S1vHs3ccHWB5+D0hdyP1bl0UyJ7?= =?us-ascii?q?FxN6YQuonKsiKVekPhpm7tzvWpJEVJw83Oa1L4FJbFtXb7UiAE43IUX5JPyH?= =?us-ascii?q?fFGZQRiAd5aacrpFRQII+9YEr+4SIrx5hxFbmiSc+r30olrWoBRyqyEtpBDf?= =?us-ascii?q?1mv0zTWDJ7ZpCktonlO49SQ2JL/52ds0lWkENoMyGjyJpcL9pC4jkDXTRVpj?= =?us-ascii?q?WdptSyQtVZ2cBqF58MPst/u3DlFaNYP5iRpmY7uqDzxn/c4D8wqlG6yyuvG6?= =?us-ascii?q?WgVeJW43UeGhk1J2SZskQvD/Ej8n3I/VDJr1955PpUCaaXjUVpvjl9Go5BBi?= =?us-ascii?q?xT2XCiNVRzQ2FMs/9GJ6TNb8xcX/4yaAetOxw5C/ErxFGG8l9vnXjneSxyqh?= =?us-ascii?q?VV9D3HUwkySyYVnq/nmScCpcG/JT8aV5VIYC09byjYNg2bmDpYvBJEZk52XJ?= =?us-ascii?q?AZB8pK9KsA3YtI5MbCT1ijKT0dVhx4Kg04yeZflVJEsEiAYi/dAxaneerNvx?= =?us-ascii?q?Fqc8qct9KmLPP8/AhbkIznq/w4+78FR3K4hQ2nWcreoJPktt2WqkuOc7/1M/?= =?us-ascii?q?eibnDcTDjDlwywiKwgD5nN4SjcLhRXJIV9yXU5f5ftE2jLMgpaJ6gDPUpUSb?= =?us-ascii?q?h6aclaouBdf8JkYL0J+bN3CR2aWhPiA5evrP5bLlbJWTvRMSOB8vCloY3J6b?= =?us-ascii?q?zRU+/gZtaDx3zfWaJ4Io966SXnG7ftyYJe5lD21elz+UxnUlXGLiSBrMj7Jg?= =?us-ascii?q?wR+smid0zivpk3EjPKGptwl2Dtxk5YfcoNXyKq6IgYyI9e6HvoS+J3yFLzsO?= =?us-ascii?q?pJ97lg84Y3/atkycKpJafWNfRasFNoAhmOCQVs7ZUhGm9/R3peYuUJMvfeYb?= =?us-ascii?q?wZjdzyq+DwD6EX6gea++pXadvdIEHOh9ewByqASRNemgcBsjkaIhGa1/Gbh6?= =?us-ascii?q?9+UdylqvTh2kIx/1i+KQYLzLZp5Yqf+6qIourXYwHQzbgCVKjqXNn8rq8wu0?= =?us-ascii?q?OI+P0riKIOenFvYwK5CuQdUdQdxmj4x6Aw0S0sC9/DH67n+PNbUXI5ny7vm5?= =?us-ascii?q?d5H1oMAfMYB7uL/YNZnmcjgOzULdgWf69Nm2qVEh6kCLACw2ax6ySLOGllng?= =?us-ascii?q?3O0xboTGyv9lD2qTF3QTDQz9bjlUpYTaK3CltTXyW3P094rDKPMxDyuNrxp6?= =?us-ascii?q?s18Fk8Mnb4u9KViGuhJLRXEtX7JNyHJCk5pEkajJMvSdOy3oAbA8CyIM8L8H?= =?us-ascii?q?F5bPvR9X+kkzNbr6dAnYre7dmf+u/LEnm4k62at7KNyShayng5uFEy8dWgOe?= =?us-ascii?q?/O5tKUWfSo1mARTyhltwvHQRG1tqTRr0oINkyTzEfLhIsKM8lY3Xg5zE7p/v?= =?us-ascii?q?QsTcko9ApACobPee8NqSr0ODvuzlaVe8g3WTWG0ztLAlL1FkF1F7M92GLrss?= =?us-ascii?q?PGj3XQ+1w0RolobUPnmBh3Ap4kJkIq9VcY3DAMERUXaRCcFrGnH17pLYweVU?= =?us-ascii?q?gMcR6HxqS1er8r3U1vxbOi/PfTYvZgB6URNvZcgAmOnEJYGp4Pqq0RXrZ8e1?= =?us-ascii?q?5b9K7KqQnvEJDnUOL6lXUsNf20TMda8doat3c44QawWQCg6ZFd4LYfkpyIcb?= =?us-ascii?q?REYZfUtsBm80hn/SIPdjBKgBVngBO2S/ocq/7/4tjbq5eo7ueuVLozSOUX7R?= =?us-ascii?q?c0Gn9+g4H2gF89vdHdz/1cRZHNiYTj7ABNJGaHuInE3Bl6NeoOLIWrcLF793?= =?us-ascii?q?oZIygeJnQOPceZavQn5y9iLi/T5lxYDc8WY9MXItbNkxhOikL1QLFT6tbbGl?= =?us-ascii?q?iABohvdcAn9Xb4xSsp/ps7Vubg7D62Ko7F71FRIfxMkCVsmMjFpOgPzvrYED?= =?us-ascii?q?IX7mWBaxhp3iOCzIGAC/P3/eWK1NHUWE0JEzUzU4dcPjWC/xKoRva7lZXuSA?= =?us-ascii?q?OU6dTzjIg4dE2OWny7hL4FvbpUEe5cliX72SBTFo/piPKOqNqg8XZZuFJBHo?= =?us-ascii?q?Zy6x3FBapeM450ORT9jMarQFZzCjH4eMHOeRokoPCWyfsU4+ViK0v+YpcWIh?= =?us-ascii?q?ADy7L673pZVBdhSL7yvlaEQO0QZdpmSPXfrnBW6IJtMLEPPFmDpJPwqjdHtV?= =?us-ascii?q?E2DBUvaLAusjxQblPOkxFNW6bopL4AjRMRUd9nuUBWH2K9I2Y+5yfaWqRUi6?= =?us-ascii?q?mRE+YZ8jKJTqwBS09oKD9xQwup2JVyfLukhfJHvX1IniNzpPgnyDJnSwG6uS?= =?us-ascii?q?Lyu6IBwzQg96+ktD8Zo3xKUv2ekzvUCVVE1PkKgqMcC3Hs6FOiZHkDaJD/4K?= =?us-ascii?q?JgJcTm9Iku/24zYRM9cC0aRe6gET3/j7uUAoyTt9JRnBuNuMTNbb+wKigfLb?= =?us-ascii?q?Y9xgjgR3h61AjRghBo/HENQjq+8N8uPJ+9Nto9xiq0BWjbc04B7bhXv8v3qV?= =?us-ascii?q?4GV/A2aVdmwGV/zsiHWDMCS9HVF2YylAgkZn1OcIhf5h8CC6konjGIs7Fe/g?= =?us-ascii?q?ETZDfbCJ6l+4fXncfM13kwVtJqxmXRpq2emJwlzGdlm9Rv7i6VuXQScePYX9?= =?us-ascii?q?VrAnjp2YdV0fb+aOm1suAbVItmz6ysUPEcPcmn+Gu2wItlV1Skx7QfGlq5Nf?= =?us-ascii?q?EMxq3fUyi7U2GYXv6Lc2eUlTYjLkHy/QWoLkEwaMpSoU49KvHChp9AmAL/Sr?= =?us-ascii?q?50QySQpUPBzGM9K+8acBg2uIi/cQwQUOERf/ScJfQpwPAmD1sMa2HGEDBuC+?= =?us-ascii?q?+yq1Gth5R7O3R87kXme+Ti7B7pPMGUGhYaDY7QtoRx9uCiRmKdJX9gywV/PE?= =?us-ascii?q?119+fZClQwufZQc5KQndjLm9R7yvUId/Z3Pi07vd4fgIVj6ZOb0M2SaxHe0o?= =?us-ascii?q?7yJc3JovifG/Dfyl4ldX1aUroYZwP14J43PsA4W73VA7RZuRUcBa4nQJ0uLW?= =?us-ascii?q?vx87t0LAxreA7LeLu0mtXqpv6MZpZMpX/Z9FEwLCDHtBAY1/y0SxB7b5Cth3?= =?us-ascii?q?XvL5AwRi5Bo8drChR4AItFA9kAoBa/A56IhKG7jMe8+0F/u+8Nq6rwEPHK1M?= =?us-ascii?q?+i0oV3RZda4FKEPDfLCKlsmERlgfy4gu3c3ZnpFcPiZdQEWfBgQm7Lb7/JAo?= =?us-ascii?q?SyJzGVN8LiZUFG6b+c0bN+UhWXfiz5WbSJtDH3fMljtGE6zJFoOcPOwD0xp5?= =?us-ascii?q?TS2d/zYW4Tgia4sTbdMJpZ8UyPDPHSXg58U/eJ8G95W6YQaN2wvMMtFPhqlN?= =?us-ascii?q?yd5RRjqTdPys2IJ4C/oULWnEF2b5TWKA3uwSlvHcEuIRKiIQMKjHP1p2qVPG?= =?us-ascii?q?xHMtKpIMwlpd+UCh3r6AFVmHoxLjpHF3bkSMm5J2cWwYS9aReM+QYNCMwMya?= =?us-ascii?q?r/X0MkuKy2VeRycrlIh+iu/JEGisohfyfCWMZbOz3dNvp6MyRcCs3Rq1UyJB?= =?us-ascii?q?0Jqb44XsEyf5fYZAsjMUGd2WvJwADfy0zoZpSJ06qUJCte9nRc0/qR1TlKuh?= =?us-ascii?q?n8ovuSn9fiTKGcaZb6QfrfGDQqWyvcRjkoF0utv1C+tKxA9NuePWoQuFEIc2?= =?us-ascii?q?q3BQcIu7piqNXWEif6g+ZjfYEHj+yHQS24HCl5krciQydNqU2DWfsfBCHIYH?= =?us-ascii?q?L7xmlRogqvIrlL532zK/Wj665UXfEGSo9NaeHRF8DVffFYOicAiiQSOOH6ec?= =?us-ascii?q?bV6bk+zASbY3EeFvzy9VaeRVSaCtOB1nrBR4QasJN87jAn8PrKkyN3GriONL?= =?us-ascii?q?Ga8W39urWkhTqV7LWNHlImZFY41adSXTPbkhBdNGEJDc0Us0jxQ6mGIlxBz2?= =?us-ascii?q?8tlfkxgE0RYA5/Cyx22yUN2vuwH9ZWD1sdjWfoRfwCPzUVRD8z/Erf5Ar0bJ?= =?us-ascii?q?RAvM3IXGZR+/MKTpZVN/gn7oTbeeMQzf8l0SggoXk8tCOQAg=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2BKAQCFR/Ba/wHyM5BcGQEBAQEBAQEBAQEBAQcBAQEBA?= =?us-ascii?q?YNBA2F6KItxXowVSAEBAQaBB4Ewi0GHZYF1DhgDEAGHESE0GAECAQEBAQEBA?= =?us-ascii?q?gFrHAyCNSSCUAMDAQIXDVIDAwkBAUgIAwFTBgESBYUPDQOpJzODeQGERII4i?= =?us-ascii?q?CURe4EHgQ8vjSMChyQShF6BH4p3CIVliGiBNTyFUoUfh0GJC4ElHDiBUjMaC?= =?us-ascii?q?BsVO4JDCYIWAReIFoVLAVFTegEBFI5sAQE?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 07 May 2018 12:36:14 +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 w47CaD6i030458; Mon, 7 May 2018 08:36:13 -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 w44KtNed082802 for ; Fri, 4 May 2018 16:55:23 -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 w44KtLm6032021 for ; Fri, 4 May 2018 16:55:29 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1DFAACLx+xaly0bGNZcGQEBAQEBAQEBA?= =?us-ascii?q?QEBAQcBAQEBAYNBZHoojE2MFUsGgQaBMIs5h2KBeAsbEYRAAoI4ITUXAQIBAQE?= =?us-ascii?q?BAQECFAEBAQEBBhgGS4U1AwMaDVIQUVcGARKFBw0DqmQzg3kBhEuCQoglEXuBB?= =?us-ascii?q?4EPL40jAochEYRegR+KbgiFZIhogTU8hVCFGYdBiQWBJR0BgggzGggbFTuCQwm?= =?us-ascii?q?CFgEOCRGIBYVLAVFTgRCOZwEB?= X-IPAS-Result: =?us-ascii?q?A1DFAACLx+xaly0bGNZcGQEBAQEBAQEBAQEBAQcBAQEBAYN?= =?us-ascii?q?BZHoojE2MFUsGgQaBMIs5h2KBeAsbEYRAAoI4ITUXAQIBAQEBAQECFAEBAQEBB?= =?us-ascii?q?hgGS4U1AwMaDVIQUVcGARKFBw0DqmQzg3kBhEuCQoglEXuBB4EPL40jAochEYR?= =?us-ascii?q?egR+KbgiFZIhogTU8hVCFGYdBiQWBJR0BgggzGggbFTuCQwmCFgEOCRGIBYVLA?= =?us-ascii?q?VFTgRCOZwEB?= X-IronPort-AV: E=Sophos;i="5.49,363,1520913600"; d="scan'208";a="269532" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.35]) by goalie.tycho.ncsc.mil with ESMTP; 04 May 2018 16:55:29 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3A2XC9bhcPiyzvsfd4U1mqOcADlGMj4u6mDksu8p?= =?us-ascii?q?Mizoh2WeGdxc24ZBGN2/xhgRfzUJnB7Loc0qyK6/umATRIyK3CmUhKSIZLWR?= =?us-ascii?q?4BhJdetC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBx?= =?us-ascii?q?rwKxd+KPjrFY7OlcS30P2594HObwlSizexfb1/IA+qoQnNq8IbnZZsJqEtxx?= =?us-ascii?q?XTv3BGYf5WxWRmJVKSmxbz+MK994N9/ipTpvws6ddOXb31cKokQ7NYCi8mM3?= =?us-ascii?q?0u683wqRbDVwqP6WACXWgQjxFFHhLK7BD+Xpf2ryv6qu9w0zSUMMHqUbw5Xy?= =?us-ascii?q?mp4rx1QxH0ligIKz858HnWisNuiqJbvAmhrAF7z4LNfY2ZKOZycqbbcNwdWW?= =?us-ascii?q?RPXthcWzVYDo2+coQPFfMNM/tFr4nmv1sBswexBRW1COPrzT9JiGL90ak63u?= =?us-ascii?q?gkFwzJ2xAuEdIQvXjNtdn7NrodUfqswKfV0DXDdOtW1inh54jUbxstpe+AUa?= =?us-ascii?q?51fcfX1EIhFR7Kjk+IpIL4Pz2byOoDvWuZ4OpuV+2vhXUqpx1trjW12ssglp?= =?us-ascii?q?XFip4Tx1vZ9St52oE1JdigRUBnYN6rDJtQuDuAN4RrX8gsQnxouSYnwbAbo5?= =?us-ascii?q?67fScKyJs8xxXCbPGHaYeI7Qn4WeaLPzh3mXJld6ijhxqo7Uegzej8W9Cy3V?= =?us-ascii?q?1XrSRFisHBum4Q2xHc8MSLVPRw8l2/1TuNzQze5eFJLVg1mKfaMZIt3709m5?= =?us-ascii?q?gJvUjdECL7ll/6ga2Ye0gi5+Om8f7oYq/8qZ+ZL4J0ih/xMqApmsGnD+s2KA?= =?us-ascii?q?YAUnaV9OmizrPu4VH1TbRQgvIojKbZtYvaJcsBqq68GQBV04Ij5wy6Dzen1N?= =?us-ascii?q?QUhXgHLFRbdxKbl4XlJUzCLf/iAfuhjFmgiilnyvLcMrDuApjBNn3Dn63gfb?= =?us-ascii?q?Z55U5c0g0zzdVH6pJOBbEOO+n+WlXvu9PFDh82KRC0z/z7B9V604MSQXiPDb?= =?us-ascii?q?OBMKPOrV+I4foiI/KSa48RuTb9LeUl5vH1gH8lmV4SYamp3ZwNZHC+BfRpOV?= =?us-ascii?q?+VYXXrgtcfQi82uV8aTer3mBirTDJSez6XVqM45zc0QKanFpuLEoSshqGRmS?= =?us-ascii?q?6mEpxKTnpLBlCFDTHjcIDSH78oSwe2aptlkzoZRf2iRpUn2BWGqgD30fxkI/?= =?us-ascii?q?DS9ylesojsgpw9w+zViAF60zFoI8mDm1yVVH1uk2oNDxo/3aR+p0M17laYze?= =?us-ascii?q?AshfFEGdFNz+1GXx18NpPGyeF+TdfoVVSFNvGEVFinRsmrG3kdQ8w8x5cqYl?= =?us-ascii?q?1hU4GkgwzN3i62DqVQm7GVCZgc7K3RxT7yKtx7xnKA07Mu2R1uZspJKH3uva?= =?us-ascii?q?N06hLSG5+BtkKViqKnPaAdxzKFoGOCy3ee+VpVWxNqULnUGHUYalbSoPzn6U?= =?us-ascii?q?7YCbyjE7IqNk1G08HUbuNrbMHkgk9HWOarHdnXeH+rlmK9AwrA76mHbIv2dm?= =?us-ascii?q?4BwT/QQBwAkgYO7TOHMxQzCT2gv3P2EjNjDxTsblnq/O04r2m0GAt89CyObk?= =?us-ascii?q?t8x/Kx+wUJzaiHRvcS2K8UkDswoDVzWlCm1pTZDMTW9CR7e6AJW9I24F5d2S?= =?us-ascii?q?r2qh01FIahIK95zgoEfA5fpU7i1xxrTI5HlJ55/zsR0ANuJPfAgxt6fDSC0M?= =?us-ascii?q?W1ZeCNcDv74QyvZqjK21rXzNeR/OIV5e8lr0n441j7C1Io/yw2y9ANiD2R65?= =?us-ascii?q?DRA0wXWJP1FEM280syq7LbZ3w74IXZnT1pPLKvuzDPk9QuGKM+yxmmctseeK?= =?us-ascii?q?OJHQP/CYsbUs6pLuEn?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DwAAAzyOxaly0bGNZcGgEBAQEBAgE?= =?us-ascii?q?BAQEIAQEBAYNBZHoojE2MFUsGgQaBMIs5h2KBeAsbEYRAAoI4ITUXAQIBAQE?= =?us-ascii?q?BAQECARMBAQEBAQYYBksMgjUkglADAxoNUhBRVwYBEoUHDQOqZTODeQGETIJ?= =?us-ascii?q?CiCURe4EHgQ8vjSMChyERhF6BH4puCIVkiGiBNTyFUIUZh0GJBYElHQGCCDM?= =?us-ascii?q?aCBsVO4JDCYIWAQ4JEYgFhUsBUVOBEI5nAQE?= X-IPAS-Result: =?us-ascii?q?A0DwAAAzyOxaly0bGNZcGgEBAQEBAgEBAQEIAQEBAYNBZ?= =?us-ascii?q?HoojE2MFUsGgQaBMIs5h2KBeAsbEYRAAoI4ITUXAQIBAQEBAQECARMBAQEBA?= =?us-ascii?q?QYYBksMgjUkglADAxoNUhBRVwYBEoUHDQOqZTODeQGETIJCiCURe4EHgQ8vj?= =?us-ascii?q?SMChyERhF6BH4puCIVkiGiBNTyFUIUZh0GJBYElHQGCCDMaCBsVO4JDCYIWA?= =?us-ascii?q?Q4JEYgFhUsBUVOBEI5nAQE?= X-IronPort-AV: E=Sophos;i="5.49,363,1520899200"; d="scan'208";a="12912819" 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; 04 May 2018 20:55:28 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;95ca732a-bafa-4ca0-895e-5ef028468241 Received: from localhost.localdomain (localhost [127.0.0.1]) by UPDCF3IC15.oob.disa.mil (Postfix) with SMTP id 40d4673tyzz3GDBX for ; Fri, 4 May 2018 20:55:27 +0000 (UTC) Received: from UPBD19PA03.eemsg.mil (unknown [192.168.18.4]) by UPDCF3IC15.oob.disa.mil (Postfix) with ESMTP id 40d4662S9Cz3GDBT for ; Fri, 4 May 2018 20:55:26 +0000 (UTC) Authentication-Results: upbd19pa03.eemsg.mail.mil; dkim=none (message not signed) header.i=none X-EEMSG-check-008: 299216949|UPBD19PA03_EEMSG_MP3.csd.disa.mil X-EEMSG-SBRS: 3.5 X-EEMSG-ORIG-IP: 66.187.233.73 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BLAABPx+xah0npu0JcGQEBAQEBAQEBAQEBAQcBAQEBAYQleiiLb16MYAaBBoEwizmHYoF4CxsQAYRAAoJZNBgBAgEBAQEBAQIUAQEBCgsJCCgjDIUpAwMaDVIQUVcGARKFBw2qZzODeQGES4JCiDZ7gQeBDy+NIwKHIRGEXoEfim4IhWSIaIE1PIVQhRmHQYkFgSUcggozGggbFTuCQwmCFgEOCYgWhUsBUSMwgQ4BAY5nAQE X-IPAS-Result: A0BLAABPx+xah0npu0JcGQEBAQEBAQEBAQEBAQcBAQEBAYQleiiLb16MYAaBBoEwizmHYoF4CxsQAYRAAoJZNBgBAgEBAQEBAQIUAQEBCgsJCCgjDIUpAwMaDVIQUVcGARKFBw2qZzODeQGES4JCiDZ7gQeBDy+NIwKHIRGEXoEfim4IhWSIaIE1PIVQhRmHQYkFgSUcggozGggbFTuCQwmCFgEOCYgWhUsBUSMwgQ4BAY5nAQE Received: from mx3-rdu2.redhat.com (HELO mx1.redhat.com) ([66.187.233.73]) by upbd19pa03.eemsg.mail.mil with ESMTP; 04 May 2018 20:55:25 +0000 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8ECED8D761; Fri, 4 May 2018 20:55:24 +0000 (UTC) Received: from madcap2.tricolour.ca (ovpn-112-12.rdu2.redhat.com [10.10.112.12]) by smtp.corp.redhat.com (Postfix) with ESMTP id 25D79215CDA7; Fri, 4 May 2018 20:55:21 +0000 (UTC) X-EEMSG-check-009: 444-444 From: Richard Guy Briggs To: Linux-Audit Mailing List , LKML , Linux NetDev Upstream Mailing List , Netfilter Devel List , Linux Security Module list , Integrity Measurement Architecture , SElinux list Date: Fri, 4 May 2018 16:54:36 -0400 Message-Id: <0e43c5135c197209b3189032d538244571e7443d.1525466167.git.rgb@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Fri, 04 May 2018 20:55:24 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Fri, 04 May 2018 20:55:24 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'rgb@redhat.com' RCPT:'' X-Mailman-Approved-At: Mon, 07 May 2018 08:32:09 -0400 Subject: [PATCH ghak81 RFC V1 3/5] audit: use inline function to get audit context 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: Eric Paris , David Howells , Ingo Molnar , Steve Grubb Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP Recognizing that the audit context is an internal audit value, use an access function to retrieve the audit context pointer for the task rather than reaching directly into the task struct to get it. Signed-off-by: Richard Guy Briggs --- include/linux/audit.h | 16 ++++++++--- include/net/xfrm.h | 2 +- kernel/audit.c | 4 +-- kernel/audit_watch.c | 2 +- kernel/auditsc.c | 52 ++++++++++++++++++------------------ net/bridge/netfilter/ebtables.c | 2 +- net/core/dev.c | 2 +- net/netfilter/x_tables.c | 2 +- net/netlabel/netlabel_user.c | 2 +- security/integrity/ima/ima_api.c | 2 +- security/integrity/integrity_audit.c | 2 +- security/lsm_audit.c | 2 +- security/selinux/hooks.c | 4 +-- security/selinux/selinuxfs.c | 6 ++--- security/selinux/ss/services.c | 12 ++++----- 15 files changed, 60 insertions(+), 52 deletions(-) diff --git a/include/linux/audit.h b/include/linux/audit.h index 5f86f7c..93e4c61 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h @@ -235,26 +235,30 @@ extern void __audit_inode_child(struct inode *parent, extern void __audit_seccomp(unsigned long syscall, long signr, int code); extern void __audit_ptrace(struct task_struct *t); +static inline struct audit_context *audit_context(struct task_struct *task) +{ + return task->audit_context; +} static inline bool audit_dummy_context(void) { - void *p = current->audit_context; + void *p = audit_context(current); return !p || *(int *)p; } static inline void audit_free(struct task_struct *task) { - if (unlikely(task->audit_context)) + if (unlikely(audit_context(task))) __audit_free(task); } static inline void audit_syscall_entry(int major, unsigned long a0, unsigned long a1, unsigned long a2, unsigned long a3) { - if (unlikely(current->audit_context)) + if (unlikely(audit_context(current))) __audit_syscall_entry(major, a0, a1, a2, a3); } static inline void audit_syscall_exit(void *pt_regs) { - if (unlikely(current->audit_context)) { + if (unlikely(audit_context(current))) { int success = is_syscall_success(pt_regs); long return_code = regs_return_value(pt_regs); @@ -468,6 +472,10 @@ static inline bool audit_dummy_context(void) { return true; } +static inline struct audit_context *audit_context(struct task_struct *task) +{ + return NULL; +} static inline struct filename *audit_reusename(const __user char *name) { return NULL; diff --git a/include/net/xfrm.h b/include/net/xfrm.h index fcce8ee..2788332 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -736,7 +736,7 @@ static inline struct audit_buffer *xfrm_audit_start(const char *op) if (audit_enabled == 0) return NULL; - audit_buf = audit_log_start(current->audit_context, GFP_ATOMIC, + audit_buf = audit_log_start(audit_context(current), GFP_ATOMIC, AUDIT_MAC_IPSEC_EVENT); if (audit_buf == NULL) return NULL; diff --git a/kernel/audit.c b/kernel/audit.c index e9f9a90..9a03603 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -1099,7 +1099,7 @@ static void audit_log_feature_change(int which, u32 old_feature, u32 new_feature if (audit_enabled == AUDIT_OFF) return; - ab = audit_log_start(current->audit_context, + ab = audit_log_start(audit_context(current), GFP_KERNEL, AUDIT_FEATURE_CHANGE); if (!ab) return; @@ -2317,7 +2317,7 @@ void audit_log_link_denied(const char *operation) return; /* Generate AUDIT_ANOM_LINK with subject, operation, outcome. */ - ab = audit_log_start(current->audit_context, GFP_KERNEL, + ab = audit_log_start(audit_context(current), GFP_KERNEL, AUDIT_ANOM_LINK); if (!ab) return; diff --git a/kernel/audit_watch.c b/kernel/audit_watch.c index 9eb8b35..8b596c4 100644 --- a/kernel/audit_watch.c +++ b/kernel/audit_watch.c @@ -274,7 +274,7 @@ static void audit_update_watch(struct audit_parent *parent, /* If the update involves invalidating rules, do the inode-based * filtering now, so we don't omit records. */ if (invalidating && !audit_dummy_context()) - audit_filter_inodes(current, current->audit_context); + audit_filter_inodes(current, audit_context(current)); /* updating ino will likely change which audit_hash_list we * are on so we need a new watch for the new list */ diff --git a/kernel/auditsc.c b/kernel/auditsc.c index 6e3ceb9..a4bbdcc 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c @@ -836,7 +836,7 @@ static inline struct audit_context *audit_take_context(struct task_struct *tsk, int return_valid, long return_code) { - struct audit_context *context = tsk->audit_context; + struct audit_context *context = audit_context(tsk); if (!context) return NULL; @@ -1510,7 +1510,7 @@ void __audit_syscall_entry(int major, unsigned long a1, unsigned long a2, unsigned long a3, unsigned long a4) { struct task_struct *tsk = current; - struct audit_context *context = tsk->audit_context; + struct audit_context *context = audit_context(tsk); enum audit_state state; if (!audit_enabled || !context) @@ -1602,7 +1602,7 @@ static inline void handle_one(const struct inode *inode) int count; if (likely(!inode->i_fsnotify_marks)) return; - context = current->audit_context; + context = audit_context(current); p = context->trees; count = context->tree_count; rcu_read_lock(); @@ -1633,7 +1633,7 @@ static void handle_path(const struct dentry *dentry) unsigned long seq; int count; - context = current->audit_context; + context = audit_context(current); p = context->trees; count = context->tree_count; retry: @@ -1715,7 +1715,7 @@ static struct audit_names *audit_alloc_name(struct audit_context *context, struct filename * __audit_reusename(const __user char *uptr) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); struct audit_names *n; list_for_each_entry(n, &context->names_list, list) { @@ -1738,7 +1738,7 @@ struct filename * */ void __audit_getname(struct filename *name) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); struct audit_names *n; if (!context->in_syscall) @@ -1766,7 +1766,7 @@ void __audit_getname(struct filename *name) void __audit_inode(struct filename *name, const struct dentry *dentry, unsigned int flags) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); struct inode *inode = d_backing_inode(dentry); struct audit_names *n; bool parent = flags & AUDIT_INODE_PARENT; @@ -1865,7 +1865,7 @@ void __audit_inode_child(struct inode *parent, const struct dentry *dentry, const unsigned char type) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); struct inode *inode = d_backing_inode(dentry); const char *dname = dentry->d_name.name; struct audit_names *n, *found_parent = NULL, *found_child = NULL; @@ -2084,7 +2084,7 @@ int audit_set_loginuid(kuid_t loginuid) */ void __audit_mq_open(int oflag, umode_t mode, struct mq_attr *attr) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); if (attr) memcpy(&context->mq_open.attr, attr, sizeof(struct mq_attr)); @@ -2108,7 +2108,7 @@ void __audit_mq_open(int oflag, umode_t mode, struct mq_attr *attr) void __audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec64 *abs_timeout) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); struct timespec64 *p = &context->mq_sendrecv.abs_timeout; if (abs_timeout) @@ -2132,7 +2132,7 @@ void __audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, void __audit_mq_notify(mqd_t mqdes, const struct sigevent *notification) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); if (notification) context->mq_notify.sigev_signo = notification->sigev_signo; @@ -2151,7 +2151,7 @@ void __audit_mq_notify(mqd_t mqdes, const struct sigevent *notification) */ void __audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); context->mq_getsetattr.mqdes = mqdes; context->mq_getsetattr.mqstat = *mqstat; context->type = AUDIT_MQ_GETSETATTR; @@ -2164,7 +2164,7 @@ void __audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat) */ void __audit_ipc_obj(struct kern_ipc_perm *ipcp) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); context->ipc.uid = ipcp->uid; context->ipc.gid = ipcp->gid; context->ipc.mode = ipcp->mode; @@ -2184,7 +2184,7 @@ void __audit_ipc_obj(struct kern_ipc_perm *ipcp) */ void __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, umode_t mode) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); context->ipc.qbytes = qbytes; context->ipc.perm_uid = uid; @@ -2195,7 +2195,7 @@ void __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, umode_t mo void __audit_bprm(struct linux_binprm *bprm) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); context->type = AUDIT_EXECVE; context->execve.argc = bprm->argc; @@ -2210,7 +2210,7 @@ void __audit_bprm(struct linux_binprm *bprm) */ int __audit_socketcall(int nargs, unsigned long *args) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); if (nargs <= 0 || nargs > AUDITSC_ARGS || !args) return -EINVAL; @@ -2228,7 +2228,7 @@ int __audit_socketcall(int nargs, unsigned long *args) */ void __audit_fd_pair(int fd1, int fd2) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); context->fds[0] = fd1; context->fds[1] = fd2; } @@ -2242,7 +2242,7 @@ void __audit_fd_pair(int fd1, int fd2) */ int __audit_sockaddr(int len, void *a) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); if (!context->sockaddr) { void *p = kmalloc(sizeof(struct sockaddr_storage), GFP_KERNEL); @@ -2258,7 +2258,7 @@ int __audit_sockaddr(int len, void *a) void __audit_ptrace(struct task_struct *t) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); context->target_pid = task_tgid_nr(t); context->target_auid = audit_get_loginuid(t); @@ -2280,7 +2280,7 @@ int audit_signal_info(int sig, struct task_struct *t) { struct audit_aux_data_pids *axp; struct task_struct *tsk = current; - struct audit_context *ctx = tsk->audit_context; + struct audit_context *ctx = audit_context(tsk); kuid_t uid = current_uid(), t_uid = task_uid(t); if (auditd_test_task(t) && @@ -2347,7 +2347,7 @@ int __audit_log_bprm_fcaps(struct linux_binprm *bprm, const struct cred *new, const struct cred *old) { struct audit_aux_data_bprm_fcaps *ax; - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); struct cpu_vfs_cap_data vcaps; ax = kmalloc(sizeof(*ax), GFP_KERNEL); @@ -2387,7 +2387,7 @@ int __audit_log_bprm_fcaps(struct linux_binprm *bprm, */ void __audit_log_capset(const struct cred *new, const struct cred *old) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); context->capset.pid = task_tgid_nr(current); context->capset.cap.effective = new->cap_effective; context->capset.cap.inheritable = new->cap_effective; @@ -2398,7 +2398,7 @@ void __audit_log_capset(const struct cred *new, const struct cred *old) void __audit_mmap_fd(int fd, int flags) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); context->mmap.fd = fd; context->mmap.flags = flags; context->type = AUDIT_MMAP; @@ -2406,7 +2406,7 @@ void __audit_mmap_fd(int fd, int flags) void __audit_log_kern_module(char *name) { - struct audit_context *context = current->audit_context; + struct audit_context *context = audit_context(current); context->module.name = kmalloc(strlen(name) + 1, GFP_KERNEL); strcpy(context->module.name, name); @@ -2415,7 +2415,7 @@ void __audit_log_kern_module(char *name) void __audit_fanotify(unsigned int response) { - audit_log(current->audit_context, GFP_KERNEL, + audit_log(audit_context(current), GFP_KERNEL, AUDIT_FANOTIFY, "resp=%u", response); } @@ -2482,7 +2482,7 @@ void __audit_seccomp(unsigned long syscall, long signr, int code) struct list_head *audit_killed_trees(void) { - struct audit_context *ctx = current->audit_context; + struct audit_context *ctx = audit_context(current); if (likely(!ctx || !ctx->in_syscall)) return NULL; return &ctx->killed_trees; diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c index 032e0fe..ff8450b 100644 --- a/net/bridge/netfilter/ebtables.c +++ b/net/bridge/netfilter/ebtables.c @@ -1062,7 +1062,7 @@ static int do_replace_finish(struct net *net, struct ebt_replace *repl, #ifdef CONFIG_AUDIT if (audit_enabled) { - audit_log(current->audit_context, GFP_KERNEL, + audit_log(audit_context(current), GFP_KERNEL, AUDIT_NETFILTER_CFG, "table=%s family=%u entries=%u", repl->name, AF_BRIDGE, repl->nentries); diff --git a/net/core/dev.c b/net/core/dev.c index 969462e..2837086 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -6749,7 +6749,7 @@ static int __dev_set_promiscuity(struct net_device *dev, int inc, bool notify) dev->flags & IFF_PROMISC ? "entered" : "left"); if (audit_enabled) { current_uid_gid(&uid, &gid); - audit_log(current->audit_context, GFP_ATOMIC, + audit_log(audit_context(current), GFP_ATOMIC, AUDIT_ANOM_PROMISCUOUS, "dev=%s prom=%d old_prom=%d auid=%u uid=%u gid=%u ses=%u", dev->name, (dev->flags & IFF_PROMISC), diff --git a/net/netfilter/x_tables.c b/net/netfilter/x_tables.c index 71325fe..f271630 100644 --- a/net/netfilter/x_tables.c +++ b/net/netfilter/x_tables.c @@ -1414,7 +1414,7 @@ struct xt_table_info * #ifdef CONFIG_AUDIT if (audit_enabled) { - audit_log(current->audit_context, GFP_KERNEL, + audit_log(audit_context(current), GFP_KERNEL, AUDIT_NETFILTER_CFG, "table=%s family=%u entries=%u", table->name, table->af, private->number); diff --git a/net/netlabel/netlabel_user.c b/net/netlabel/netlabel_user.c index 58495f4..6cd5573 100644 --- a/net/netlabel/netlabel_user.c +++ b/net/netlabel/netlabel_user.c @@ -104,7 +104,7 @@ struct audit_buffer *netlbl_audit_start_common(int type, if (audit_enabled == 0) return NULL; - audit_buf = audit_log_start(current->audit_context, GFP_ATOMIC, type); + audit_buf = audit_log_start(audit_context(current), GFP_ATOMIC, type); if (audit_buf == NULL) return NULL; diff --git a/security/integrity/ima/ima_api.c b/security/integrity/ima/ima_api.c index bf88236..a727ae0 100644 --- a/security/integrity/ima/ima_api.c +++ b/security/integrity/ima/ima_api.c @@ -326,7 +326,7 @@ void ima_audit_measurement(struct integrity_iint_cache *iint, hex_byte_pack(hash + (i * 2), iint->ima_hash->digest[i]); hash[i * 2] = '\0'; - ab = audit_log_start(current->audit_context, GFP_KERNEL, + ab = audit_log_start(audit_context(current), GFP_KERNEL, AUDIT_INTEGRITY_RULE); if (!ab) goto out; diff --git a/security/integrity/integrity_audit.c b/security/integrity/integrity_audit.c index 90987d1..79adc98a 100644 --- a/security/integrity/integrity_audit.c +++ b/security/integrity/integrity_audit.c @@ -38,7 +38,7 @@ void integrity_audit_msg(int audit_msgno, struct inode *inode, if (!integrity_audit_info && audit_info == 1) /* Skip info messages */ return; - ab = audit_log_start(current->audit_context, GFP_KERNEL, audit_msgno); + ab = audit_log_start(audit_context(current), GFP_KERNEL, audit_msgno); audit_log_format(ab, "pid=%d uid=%u auid=%u ses=%u", task_pid_nr(current), from_kuid(&init_user_ns, current_cred()->uid), diff --git a/security/lsm_audit.c b/security/lsm_audit.c index 67703db..ccae258 100644 --- a/security/lsm_audit.c +++ b/security/lsm_audit.c @@ -447,7 +447,7 @@ void common_lsm_audit(struct common_audit_data *a, if (a == NULL) return; /* we use GFP_ATOMIC so we won't sleep */ - ab = audit_log_start(current->audit_context, GFP_ATOMIC | __GFP_NOWARN, + ab = audit_log_start(audit_context(current), GFP_ATOMIC | __GFP_NOWARN, AUDIT_AVC); if (ab == NULL) diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 4cafe6a..f1de97a 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -3294,7 +3294,7 @@ static int selinux_inode_setxattr(struct dentry *dentry, const char *name, } else { audit_size = 0; } - ab = audit_log_start(current->audit_context, GFP_ATOMIC, AUDIT_SELINUX_ERR); + ab = audit_log_start(audit_context(current), GFP_ATOMIC, AUDIT_SELINUX_ERR); audit_log_format(ab, "op=setxattr invalid_context="); audit_log_n_untrustedstring(ab, value, audit_size); audit_log_end(ab); @@ -6431,7 +6431,7 @@ static int selinux_setprocattr(const char *name, void *value, size_t size) audit_size = size - 1; else audit_size = size; - ab = audit_log_start(current->audit_context, GFP_ATOMIC, AUDIT_SELINUX_ERR); + ab = audit_log_start(audit_context(current), GFP_ATOMIC, AUDIT_SELINUX_ERR); audit_log_format(ab, "op=fscreate invalid_context="); audit_log_n_untrustedstring(ab, value, audit_size); audit_log_end(ab); diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c index efdc633..e5f90da 100644 --- a/security/selinux/selinuxfs.c +++ b/security/selinux/selinuxfs.c @@ -167,7 +167,7 @@ static ssize_t sel_write_enforce(struct file *file, const char __user *buf, NULL); if (length) goto out; - audit_log(current->audit_context, GFP_KERNEL, AUDIT_MAC_STATUS, + audit_log(audit_context(current), GFP_KERNEL, AUDIT_MAC_STATUS, "enforcing=%d old_enforcing=%d auid=%u ses=%u" " enabled=%d old-enabled=%d lsm=selinux res=1", new_value, old_value, @@ -303,7 +303,7 @@ static ssize_t sel_write_disable(struct file *file, const char __user *buf, length = selinux_disable(fsi->state); if (length) goto out; - audit_log(current->audit_context, GFP_KERNEL, AUDIT_MAC_STATUS, + audit_log(audit_context(current), GFP_KERNEL, AUDIT_MAC_STATUS, "enforcing=%d old_enforcing=%d auid=%u ses=%u" " enabled=%d old-enabled=%d lsm=selinux res=1", enforcing, enforcing, @@ -581,7 +581,7 @@ static ssize_t sel_write_load(struct file *file, const char __user *buf, length = count; out1: - audit_log(current->audit_context, GFP_KERNEL, AUDIT_MAC_POLICY_LOAD, + audit_log(audit_context(current), GFP_KERNEL, AUDIT_MAC_POLICY_LOAD, "auid=%u ses=%u lsm=selinux res=1", from_kuid(&init_user_ns, audit_get_loginuid(current)), audit_get_sessionid(current)); diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c index 8057e19..83f40e2 100644 --- a/security/selinux/ss/services.c +++ b/security/selinux/ss/services.c @@ -501,7 +501,7 @@ static void security_dump_masked_av(struct policydb *policydb, goto out; /* audit a message */ - ab = audit_log_start(current->audit_context, + ab = audit_log_start(audit_context(current), GFP_ATOMIC, AUDIT_SELINUX_ERR); if (!ab) goto out; @@ -743,7 +743,7 @@ static int security_validtrans_handle_fail(struct selinux_state *state, goto out; if (context_struct_to_string(p, tcontext, &t, &tlen)) goto out; - audit_log(current->audit_context, GFP_ATOMIC, AUDIT_SELINUX_ERR, + audit_log(audit_context(current), GFP_ATOMIC, AUDIT_SELINUX_ERR, "op=security_validate_transition seresult=denied" " oldcontext=%s newcontext=%s taskcontext=%s tclass=%s", o, n, t, sym_name(p, SYM_CLASSES, tclass-1)); @@ -929,7 +929,7 @@ int security_bounded_transition(struct selinux_state *state, &old_name, &length) && !context_struct_to_string(policydb, new_context, &new_name, &length)) { - audit_log(current->audit_context, + audit_log(audit_context(current), GFP_ATOMIC, AUDIT_SELINUX_ERR, "op=security_bounded_transition " "seresult=denied " @@ -1586,7 +1586,7 @@ static int compute_sid_handle_invalid_context( goto out; if (context_struct_to_string(policydb, newcontext, &n, &nlen)) goto out; - audit_log(current->audit_context, GFP_ATOMIC, AUDIT_SELINUX_ERR, + audit_log(audit_context(current), GFP_ATOMIC, AUDIT_SELINUX_ERR, "op=security_compute_sid invalid_context=%s" " scontext=%s" " tcontext=%s" @@ -2882,7 +2882,7 @@ int security_set_bools(struct selinux_state *state, int len, int *values) for (i = 0; i < len; i++) { if (!!values[i] != policydb->bool_val_to_struct[i]->state) { - audit_log(current->audit_context, GFP_ATOMIC, + audit_log(audit_context(current), GFP_ATOMIC, AUDIT_MAC_CONFIG_CHANGE, "bool=%s val=%d old_val=%d auid=%u ses=%u", sym_name(policydb, SYM_BOOLS, i), @@ -3025,7 +3025,7 @@ int security_sid_mls_copy(struct selinux_state *state, if (rc) { if (!context_struct_to_string(policydb, &newcon, &s, &len)) { - audit_log(current->audit_context, + audit_log(audit_context(current), GFP_ATOMIC, AUDIT_SELINUX_ERR, "op=security_sid_mls_copy " "invalid_context=%s", s);