Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753318AbdLHKp1 (ORCPT ); Fri, 8 Dec 2017 05:45:27 -0500 Received: from mail-ve1eur01on0091.outbound.protection.outlook.com ([104.47.1.91]:2720 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751321AbdLHKpX (ORCPT ); Fri, 8 Dec 2017 05:45:23 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; Subject: Re: [PATCH v2] ubsan: don't handle misaligned address when support unaligned access To: Andrew Morton Cc: Ding Tianhong , "linux-kernel@vger.kernel.org" , LinuxArm , David Laight References: <5b905d56-609e-3822-096a-3b93b3eb7675@huawei.com> <20171206164916.687d5006b7a49ef1149e7154@linux-foundation.org> <022fdf6b-6e00-fe70-3124-80b8ff50a859@virtuozzo.com> <20171207152453.7aaf8f420ebf69d13c29a761@linux-foundation.org> From: Andrey Ryabinin Message-ID: <8c7cc89e-f976-077b-7b64-1046a1f69569@virtuozzo.com> Date: Fri, 8 Dec 2017 13:48:53 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <20171207152453.7aaf8f420ebf69d13c29a761@linux-foundation.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0401CA0079.eurprd04.prod.outlook.com (2603:10a6:3:19::47) To DB6PR08MB2823.eurprd08.prod.outlook.com (2603:10a6:6:1d::26) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d5888285-61d2-4ac8-4893-08d53e28c6e2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(5600026)(4604075)(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(2017052603307);SRVR:DB6PR08MB2823; X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;3:UxtGknCEa4vxgxNcYMzJVLkiBJXZAw+1saXgBWwaBjOVyOJcFw72Tr4YjBPPlv/yfzbGQJh3I03TgOLIh/XA4buiczJpRhiMYvape607nVLCRDY5VzosW05g3gTK93+at5JYqiMwqpa5U+5JSZTwEmr0/XxSC996hi95zhXMZThHWmShqs3p/ttetXnG9di6QUzNQsD/fzIIXodKrpioNvcfrV0nj2aMAn6MoTwAO1gyBuruXcZG6DIcVAWynO/9;25:aibq4yjZM71k0DmRt4fQFTwUbOmQfQMoMLCvi+DyenDKHT6ztY03JLP5utzYK5tbJ5lnp6xNOnxQ/aJ/WWPMNJPxFwqERCuR4VsAkPmdeZKjaw0S/us9peNdVm0ErghsLRIsMlDWc2R7uIc5d48qIBeMHQjpoK4urbX/upEkVPf0psCyM0PB3UIi5ONErcF+Rfx6c+wv+cszsZNgB4UEqkx9qRKh9wRVAnxpCTHDZF+HXW9TpewIXyJiloLTyIYERza800nppVPAydDzSzMVf+s/yj7flIyXPb6d5xdYXMc/Ua4LwNUkSgjdsmGnRjkq2bp7Q8dZAWQObs4ClJuxbQ==;31:+cIYlItjtTbi4zFBQSGCQLg1EnHKHebkzmqBbuyqc731j4qcz6Gy8LRgcWXQiXYeDSfXiqrckocuC2/3I9vNpXdf1ieDpqqnOc5llYBI01CtqEUo7EjeFMeMr74u1yl+Xr9ZqveEKVomIWsg4Rs+4+DqpoaZJ73OdolaY3ZOckLg0NogWYLVCsitmsSy+A3j7PD3pxK8YYHUGUl0b+RJFmnRiqYP9Ki60gUBIMJWxJk= X-MS-TrafficTypeDiagnostic: DB6PR08MB2823: X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;20:5STSSLvxbLfyUf3pInkiT7MiNDF13/iq6zNzMQIkSrLTR3O//ptQOQxTmUCeE7TeV8eFq3AEXtnutFKb2FA4i9cb/+sGvXEB9xf0dxhKi35zS0eqLwomzaENUbXNkUOBwzeKqwpcH4Nzuh3eiky1l95CptcWv7L1l9ypIHLToaWi2NgM5tt3+TfKQWitXs4NqmJr52atNJrLSZGvTH4/tiXjsLji2j1H3M5CXNJ401HKM1Go0O9LEYqmc5KLq2YddWDrYJc1zVx1dT5eaByw3ByLvdXo3I1u3bsr9fkJs+EXMvlHfCGFs/SHxM3aEtcXB8uV9hcU4+Myy99grK01mgwgj498VRIW/RR3mHH2WcAIb3yvMm4vSMn1wC8zN+/Lj8YZmEyMBzHQpIheH5otKwiefzRgTpoHIva/fQveKdo=;4:iVgqG5oljL8syohCuBYFPIhvvrzdMqfz3mVXk6W4YDCni9GW71RWxWwNgSCD4gCdvDa0mimfO3QuophhwmY91cphJRmhmD5hBRMe5YwSEwOC0kYtl23ZvsF2W51ziaaN+Kn1D9bZvGdJ2M5rA1fGYQrTxIJj7bBa+TscdAlxgoq+Pjh7qVQX8PfF/ONTtIgvdk8yKfyuKGoBl6L6AugV3dSxEQR6xtgS2Wep9oIfn6nMxif6DgLzM0gAJvj9B6EvgrSS/YcvYXMgUuQfyBy9byQ0YzErBM6Gj4pvsGZ/C6xdv2MYAXEE+dfqay0ZMcqwH5DGiGJQSSFGiqU4c+EEtyOW23TY8q8ndGN6lKnen62K9UQWT7CIBBaHen0iuL7+ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(20558992708506)(50582790962513)(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(8121501046)(5005006)(3231022)(3002001)(93006095)(93001095)(10201501046)(6041248)(20161123558100)(20161123560025)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148)(201708071742011);SRVR:DB6PR08MB2823;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:DB6PR08MB2823; X-Forefront-PRVS: 0515208626 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6049001)(376002)(346002)(366004)(39830400002)(199004)(189003)(24454002)(16526018)(58126008)(230700001)(8936002)(53546010)(83506002)(68736007)(93886005)(6116002)(7736002)(16576012)(316002)(3846002)(2906002)(31696002)(81156014)(81166006)(54906003)(76176011)(6486002)(77096006)(229853002)(52146003)(2486003)(86362001)(23676004)(55236003)(6246003)(8676002)(52116002)(4326008)(53936002)(2950100002)(6666003)(6916009)(65956001)(65806001)(64126003)(36756003)(31686004)(66066001)(47776003)(50466002)(5660300001)(65826007)(478600001)(106356001)(105586002)(33646002)(97736004)(305945005)(25786009);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR08MB2823;H:[172.16.25.12];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4TUIyODIzOzIzOmlsdkdxakFXbU5xTG1SZURqeU1LeUxzM1Y1?= =?utf-8?B?cjQwS3NvdWllQ3JEd2lCSXE5MkZ0M0xEWlFKcjhBeHlOc3VHVGxFZ2VCSEM5?= =?utf-8?B?SHlTKzZyNHlwVE5PbHR4Qzh4YjVlbUpHVG1XajMzM090RjdNNEVCaTBYNmpn?= =?utf-8?B?Z1RXUGM0WHl0TnFYVWJPS0owSzI5bXZERDdSaDNnaG5URGxTMzlhNGtYVWo4?= =?utf-8?B?Rnh3NGxSbnJGMUxXcjFTaWdEVEpqVS82dTRBMGtkTVFvRHZubk5jR0hCanBp?= =?utf-8?B?VU1KYkEzSHJNQmwvN2Y5SERNMHZQQ2VReGdLY2VGaitmYVRvRWh4ZkMyc0pk?= =?utf-8?B?emZLdThkMWFsZEpzQUlQaDJMK2UzN2U3Q0M2QlJUS0xLTmxVMzFMajk2Y2Z4?= =?utf-8?B?VjZvNm9XeFMwVUViNWFQaUo0NC96a3prTERDSktJTmU4Mmo2WVBGbnpZdnJH?= =?utf-8?B?Tm01TnNkTko2dHFaRlVJZUdoVFJsQTMxQjdRLzlwb2xIclFsc3hlcHVRNnZT?= =?utf-8?B?L3JzVS9Cc2tWK1FCSFgzc0wrWi9lTzZZK1hCb00rdmtER1IyZWNHRjBVN2Y2?= =?utf-8?B?TDNZa1VwdmliN1d2cFpFVkxFQlJrd3NmZTdsb2hyaTd4azloVVQwd3BjRDJS?= =?utf-8?B?bGJQNGwzdWdORjA3NEpnWkp4VnAxYXpwSXFFdXFGdmtOcEcxcFBFdU0rZ1pm?= =?utf-8?B?bGhiUnl5RVAyVEM2b2F5NUF3Q3BBblkvaWZ1NHZ5TzRxTndVanFRL3FGMUcx?= =?utf-8?B?ZFFwYTE1Q0ZtNGdzaFhkQU8zWVFkby9rRmFBbVd6eElpWlZ3aFFzVGJ1K1pa?= =?utf-8?B?ZXVJWExxNENnNFdZanp1UE1rRC9oUFBIQ0kyZ0JrRlVYM2pqanRRNy9wdHNo?= =?utf-8?B?NlZod0wrb3hnQ1Irc0ozSExWbG54NGl0Tjd1MWxsVHVYamVyYmhDYWZOZ0VE?= =?utf-8?B?UkZNMHZ4TG04ajM1WUxzNWdFQ0tDbG1heE1Bd3d1UjMvdzNjZG1RbzhpcjlD?= =?utf-8?B?RVZCWUFZb1A5eWkxYmEzNEJNdnRzSVJxSEpya2VpejFxeEdVa1JkRHp2TC9B?= =?utf-8?B?K0s0NnQ5MThUT2pnaTcxN2VBT29QWWlmQWcyRWNVUVk4eXVnVVkyYTdHU01F?= =?utf-8?B?dS9JZ25mbVppT2ZHUlFQenowb1R2MTZDMHJCY0NhUE5yWEMrUnVEMkYvcjJZ?= =?utf-8?B?N28xUWthT3RlN09Oa0tqenNVZUNGdzZPTzh2VDI1RnFqR3dnQnpmSzUwcTZ0?= =?utf-8?B?ZXZ0Yzhqc1RSZWFMRGdmNW9QUWR3N1VRSzhyNkxwa2JEaWkzcU1BUHB0M0Q1?= =?utf-8?B?UlEyNndTRENJV2hpdURyNE9NUzVaN2ZkTDdHWGE2WEdaODk4WmhtblN4elRJ?= =?utf-8?B?eHY0UFNrYUVVakhUY0JYM3orKzNCeDlFMjJLT0FUbytzdVFFdXZDM2cxdkh5?= =?utf-8?B?VHM0ZEo2THgvdGl3Y3Y4N2IzMkpETGIxOVRrRFIvdGd6bmpuWVAvdkMxU2o1?= =?utf-8?B?d3RlQkFyUWY0L1c2SUgvRHNDV2hGTmVkYkcvZVAraUlGNFdqM1N6OXE4QkFj?= =?utf-8?B?emVCU2xDWTlRR2x1dHFTakJTUnYycnBEcHN5UFEwaWZsQXNNOGNEYnhHNjBH?= =?utf-8?B?d3ZJc1ZqeVZoTDNBTmI2TXJGbkR6Q2lXRkJCWk9UNmhaNnNYdmUvczBFKzEx?= =?utf-8?B?M084TVl3bDZHeGpHMG5LSjZ4QkdBWnFQZkN6cXRIS1c1SGlRRnlaZ09IOEpD?= =?utf-8?B?MXpBVForUFF5V09LMHBuSTZrY1NlOHdhamJCcWEwdk40QXl0c2xxUkdta0pE?= =?utf-8?B?NGo2bk5SV08yQk5kbTUvT0pkeU5EWEVSSjIwbmw0TEVORU1MVG8zSEtWbXBE?= =?utf-8?Q?sdRABewX2ho=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;6:+scPIlqnLSAHXTKvEEXyT3okl/SfAUt/RlZqjLpQ/AdeWtR+fMSAba4eKfD+giP642R9E01Lmii6UTrqqQgaf/DBg8j4XFNnndUSQhvg/SaMpTPJsrj9wsZ7ITcPEoup7vb9jle78jEvwj8OdYZakzH3fU5PiGHWu0rKdVLZ1l1s48LcZZIjhTNUrOQlTV8tvcdIFP0O4RSABMe/xptm8rquI3UXjlc+vEAJO6AFvFUJidCLcCW8wWwl9PwZoAZoxHN6g0P+/0nK7ZUSkJDWTZ6Dd4uejrLUDNxMW299qKh2LTG+IEjP+UV4yAmPduh7k7smdTrHQyB71J7X670xVnBJQUZejJSGHNv+tR/7DMA=;5:yhpcCjWdfbutVrTzYx0u8maYd/vtrjSVr6zZGgARZyLUqWouQwlaDgayarEs2q5g9fGIFoZomfRboqhHMXqIM20hR96NjLLJAlImMgMAygZZKrzcDOJLhBiKjxIzEYK8yReZQJgMj5egI4UC7YrmoHaLewsvDBIDi/WHk75FgNk=;24:4m3fG6N3TybsiqPsH30Kom5RYeFsaHb6wG/60pjmRDiUGGw4siFBCAHDn6/t+BfUMo9OdpF04Zu7QJZkMF+G+nbkZB10xzceqVlMyrVgUv8=;7:GzcjkJon1PBDW8Bh9vJ7PKYxfAB8aFSt6egHPjsin2rY/kfHA+gh/Q7aFzoPGp6ek5P97s+FYZpbbZrMS3uNwagrEk1qIyZqylE/EvbkkvH8vcdVQsmV4zeP+/bE6iip6XmaTjpDSxpo4+Eyix9T1p7cBrp7eP4VC7vbB4wvBkfPeuEjhdgCEtzcmv8nOp3zdhqo3+GvBgp4yJKNkqeh/hqTgH3Z5Tdgr/bKqj2gGJXFLxUs0Zrx8QNK3KOn79jW SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;20:fUZRVxrCw3Y/id6xGLvwJ1HEC63UvaEcw6ClV2+7q0GjNkcR+wIH/jycAkymPlljpPEDbgo9mWHD406EAuVWUFFjO+ghhjc1CO/uaKLPcsmb5nGJ5gZJhCBy6EXnZOgWx7bpTj4RZCsuv/pR6rwChQ7OgJotGxL/cysTXtRmxrI= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Dec 2017 10:45:19.3969 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d5888285-61d2-4ac8-4893-08d53e28c6e2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2823 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2947 Lines: 66 On 12/08/2017 02:24 AM, Andrew Morton wrote: > On Thu, 7 Dec 2017 16:31:23 +0300 Andrey Ryabinin wrote: > >> On 12/07/2017 03:49 AM, Andrew Morton wrote: >>> (correcting Andrey's email address) >>> >>> >>> From: Ding Tianhong >>> Subject: lib/ubsan.c: don't handle misaligned address when kernel supports unaligned access >>> >>> ubsan reports a warning like: >>> >>> UBSAN: Undefined behaviour in ../include/linux/etherdevice.h:386:9 >>> load of misaligned address ffffffc069ba0482 for type 'long unsigned int' >>> which requires 8 byte alignment >>> CPU: 0 PID: 901 Comm: sshd Not tainted 4.xx+ #1 >>> Hardware name: linux,dummy-virt (DT) >>> Call trace: >>> [] dump_backtrace+0x0/0x348 >>> [] show_stack+0x20/0x30 >>> [] dump_stack+0x144/0x1b4 >>> [] ubsan_epilogue+0x18/0x74 >>> [] __ubsan_handle_type_mismatch+0x1a0/0x25c >>> [] dev_gro_receive+0x17d8/0x1830 >>> [] napi_gro_receive+0x30/0x158 >>> [] virtnet_receive+0xad4/0x1fa8 >>> >>> The reason is that when enabling the CONFIG_UBSAN_ALIGNMENT, ubsan will >>> report the unaligned access even if the system supports it >>> (CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y). This produces a lot of noise >>> in the log and causes confusion. >>> >> >> NACK. This doesn't make sense. If you don't want to see misaligned access reports >> you simply shouldn't enable CONFIG_UBSAN_ALIGNMENT. > > So should UBSAN Kconfig disable CONFIG_UBSAN_ALIGNMENT when > CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y? > CONFIG_UBSAN_ALIGNMENT is already disabled by default for HAVE_EFFICIENT_UNALIGNED_ACCESS=y because it's noisy, but we still allow users to enable it if they want to. I don't think we should completely forbid enabling it for HAVE_EFFICIENT_UNALIGNED_ACCESS=y. Unaligned access is still a bug in non-arch code and outside of sections like #ifdef HAVE_EFFICIENT_UNALIGNED_ACCESS .. #endif . As for UBSAN noise inside #ifdef HAVE_EFFICIENT_UNALIGNED_ACCESS .. #endif sections, it should be possible to suppress it with something like this: typedef __attribute__((aligned(1))) int unaligned_int; .... int x = *(unaligned_int*)unalinged_addr; This shouldn't affect generated code (on arches that support unaligned loads) and suppresses UBSAN warnings. It's might be a right thing todo. Even if arch supports unaligned access, it's still undefined behaviour according to the C standard. And one day, GCC might start doing optimizations based on this, e.g.: u64 *ptr; ... x = *ptr; ... if (ptr & 7) // Compiler can assume that this statement is always false, because 'ptr' was deferenced, so it must be aligned do_something();