From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1TiKrr-0005Xb-GM for kexec@lists.infradead.org; Tue, 11 Dec 2012 08:07:08 +0000 Message-ID: <50C6E927.9040605@cn.fujitsu.com> Date: Tue, 11 Dec 2012 16:04:55 +0800 From: Zhang Yanfei MIME-Version: 1.0 Subject: Re: [PATCH] x86/kexec: crash_vmclear_local_vmcss needs __rcu References: <50C18168.305@cn.fujitsu.com> <20121210203014.GB2402@amt.cnet> In-Reply-To: <20121210203014.GB2402@amt.cnet> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: kexec-bounces@lists.infradead.org Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Marcelo Tosatti Cc: "kvm@vger.kernel.org" , Gleb Natapov , "kexec@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "Eric W. Biederman" , kbuild test robot 5LqOIDIwMTLlubQxMuaciDEx5pelIDA0OjMwLCBNYXJjZWxvIFRvc2F0dGkg5YaZ6YGTOgo+IE9u IEZyaSwgRGVjIDA3LCAyMDEyIGF0IDAxOjQwOjU2UE0gKzA4MDAsIFpoYW5nIFlhbmZlaSB3cm90 ZToKPj4gVGhpcyByZW1vdmVzIHRoZSBzcGFyc2Ugd2FybmluZzoKPj4gYXJjaC94ODYva2VybmVs L2NyYXNoLmM6NDk6MzI6IHNwYXJzZTogaW5jb21wYXRpYmxlIHR5cGVzIGluIGNvbXBhcmlzb24g ZXhwcmVzc2lvbiAoZGlmZmVyZW50IGFkZHJlc3Mgc3BhY2VzKQo+Pgo+PiBSZXBvcnRlZC1ieTog a2J1aWxkIHRlc3Qgcm9ib3QgPGZlbmdndWFuZy53dUBpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYt Ynk6IFpoYW5nIFlhbmZlaSA8emhhbmd5YW5mZWlAY24uZnVqaXRzdS5jb20+Cj4+IC0tLQo+PiAg YXJjaC94ODYvaW5jbHVkZS9hc20va2V4ZWMuaCB8ICAgIDQgKysrLQo+PiAgYXJjaC94ODYva2Vy bmVsL2NyYXNoLmMgICAgICB8ICAgIDQgKystLQo+PiAgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2Vy dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9rZXhlYy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va2V4ZWMuaAo+PiBpbmRleCAy OGZlZWJhLi4xNjg4MmNkIDEwMDY0NAo+PiAtLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rZXhl Yy5oCj4+ICsrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2tleGVjLmgKPj4gQEAgLTE2Myw3ICsx NjMsOSBAQCBzdHJ1Y3Qga2ltYWdlX2FyY2ggewo+PiAgfTsKPj4gICNlbmRpZgo+PiAgCj4+IC1l eHRlcm4gdm9pZCAoKmNyYXNoX3ZtY2xlYXJfbG9hZGVkX3ZtY3NzKSh2b2lkKTsKPj4gK2V4dGVy biB2b2lkIF9fcmN1ICgqY3Jhc2hfdm1jbGVhcl9sb2FkZWRfdm1jc3MpKHZvaWQpOwo+PiArI2Rl ZmluZSB2bWNsZWFyX2Z1bmNfcmN1KHZtY2xlYXJfZnVuYykgXAo+PiArCSgodm9pZCAoKikodm9p ZCkpIHJjdV9kZXJlZmVyZW5jZSh2bWNsZWFyX2Z1bmMpKQo+PiAgCj4+ICAjZW5kaWYgLyogX19B U1NFTUJMWV9fICovCj4+ICAKPj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcmFzaC5j IGIvYXJjaC94ODYva2VybmVsL2NyYXNoLmMKPj4gaW5kZXggMmY2YjhlOC4uNTBjZTFkNiAxMDA2 NDQKPj4gLS0tIGEvYXJjaC94ODYva2VybmVsL2NyYXNoLmMKPj4gKysrIGIvYXJjaC94ODYva2Vy bmVsL2NyYXNoLmMKPj4gQEAgLTM4LDcgKzM4LDcgQEAgaW50IGluX2NyYXNoX2tleGVjOwo+PiAg ICoKPj4gICAqIHByb3RlY3RlZCBieSByY3UuCj4+ICAgKi8KPj4gLXZvaWQgKCpjcmFzaF92bWNs ZWFyX2xvYWRlZF92bWNzcykodm9pZCkgPSBOVUxMOwo+PiArdm9pZCBfX3JjdSAoKmNyYXNoX3Zt Y2xlYXJfbG9hZGVkX3ZtY3NzKSh2b2lkKSA9IE5VTEw7Cj4gCj4gSXNudCB0aGlzIChfX3JjdSBB UyB0YWcpIHN1ZmZpY2llbnQ/IEFmdGVyIGFsbCwgc3BhcnNlIGlzIGNvbXBsYWluaW5nCj4gYWJv dXQgbmFtZXNwYWNlcy4KPiAKPiBDcmVhdGluZyBhICNkZWZpbmUgdG8gY2FzdCBzZWVtcyBleGNl c3NpdmUuCj4gCj4gCgpJIGFtIG5vdCB2ZXJ5IGZhbWlsaWFyIHdpdGggdGhlIHJjdS4KQWRkaW5n IF9fcmN1IHRhZyBjb3VsZCBzb2x2ZSB0aGUgcHJvYmxlbS4gQnV0IGl0IGltcG9ydGVkIGFub3Ro ZXIgd2FybmluZwp3aGVuIEkgdHJ5IHRvIGFzc2lnbiByY3VfZGVyZWZlcmVuY2UoY3Jhc2hfdm1j bGVhcl9sb2FkZWRfdm1jc3MpIHRvCmRvX3ZtY2xlYXJfb3BlcmF0aW9uOgoKYXJjaC94ODYva2Vy bmVsL2NyYXNoLmM6NDk6MzA6IHdhcm5pbmc6IGluY29ycmVjdCB0eXBlIGluIGFzc2lnbm1lbnQg KGRpZmZlcmVudCBtb2RpZmllcnMpCmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jOjQ5OjMwOiAgICBl eHBlY3RlZCB2b2lkICggKmRvX3ZtY2xlYXJfb3BlcmF0aW9uICkoIC4uLiApCmFyY2gveDg2L2tl cm5lbC9jcmFzaC5jOjQ5OjMwOiAgICBnb3Qgdm9pZCAoIFtub2RlcmVmXSAqPG5vaWRlbnQ+ICko IC4uLiApCmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jOjQ5OjMwOiB3YXJuaW5nOiBpbmNvcnJlY3Qg dHlwZSBpbiBhc3NpZ25tZW50IChkaWZmZXJlbnQgbW9kaWZpZXJzKQphcmNoL3g4Ni9rZXJuZWwv Y3Jhc2guYzo0OTozMDogICAgZXhwZWN0ZWQgdm9pZCAoICpkb192bWNsZWFyX29wZXJhdGlvbiAp KCAuLi4gKQphcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYzo0OTozMDogICAgZ290IHZvaWQgKCBbbm9k ZXJlZl0gKjxub2lkZW50PiApKCAuLi4gKQoKU28gSSBtYWRlIHRoZSAjZGVmaW5lIHRvIGNhc3Qg aXRzIHR5cGUuCgpJZiB5b3UgaGF2ZSBhbnkgc3VnZ2VzdGlvbiwgdGhhdCdsbCBiZSBoZWxwZnVs LgoKVGhhbmtzClpoYW5nIFlhbmZlaQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18Ka2V4ZWMgbWFpbGluZyBsaXN0CmtleGVjQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9rZXhlYwo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhang Yanfei Subject: Re: [PATCH] x86/kexec: crash_vmclear_local_vmcss needs __rcu Date: Tue, 11 Dec 2012 16:04:55 +0800 Message-ID: <50C6E927.9040605@cn.fujitsu.com> References: <50C18168.305@cn.fujitsu.com> <20121210203014.GB2402@amt.cnet> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: "Eric W. Biederman" , Gleb Natapov , "kvm@vger.kernel.org" , "kexec@lists.infradead.org" , "linux-kernel@vger.kernel.org" , kbuild test robot To: Marcelo Tosatti Return-path: In-Reply-To: <20121210203014.GB2402@amt.cnet> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org =E4=BA=8E 2012=E5=B9=B412=E6=9C=8811=E6=97=A5 04:30, Marcelo Tosatti =E5= =86=99=E9=81=93: > On Fri, Dec 07, 2012 at 01:40:56PM +0800, Zhang Yanfei wrote: >> This removes the sparse warning: >> arch/x86/kernel/crash.c:49:32: sparse: incompatible types in compari= son expression (different address spaces) >> >> Reported-by: kbuild test robot >> Signed-off-by: Zhang Yanfei >> --- >> arch/x86/include/asm/kexec.h | 4 +++- >> arch/x86/kernel/crash.c | 4 ++-- >> 2 files changed, 5 insertions(+), 3 deletions(-) >> >> diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kex= ec.h >> index 28feeba..16882cd 100644 >> --- a/arch/x86/include/asm/kexec.h >> +++ b/arch/x86/include/asm/kexec.h >> @@ -163,7 +163,9 @@ struct kimage_arch { >> }; >> #endif >> =20 >> -extern void (*crash_vmclear_loaded_vmcss)(void); >> +extern void __rcu (*crash_vmclear_loaded_vmcss)(void); >> +#define vmclear_func_rcu(vmclear_func) \ >> + ((void (*)(void)) rcu_dereference(vmclear_func)) >> =20 >> #endif /* __ASSEMBLY__ */ >> =20 >> diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c >> index 2f6b8e8..50ce1d6 100644 >> --- a/arch/x86/kernel/crash.c >> +++ b/arch/x86/kernel/crash.c >> @@ -38,7 +38,7 @@ int in_crash_kexec; >> * >> * protected by rcu. >> */ >> -void (*crash_vmclear_loaded_vmcss)(void) =3D NULL; >> +void __rcu (*crash_vmclear_loaded_vmcss)(void) =3D NULL; >=20 > Isnt this (__rcu AS tag) sufficient? After all, sparse is complaining > about namespaces. >=20 > Creating a #define to cast seems excessive. >=20 >=20 I am not very familiar with the rcu. Adding __rcu tag could solve the problem. But it imported another warni= ng when I try to assign rcu_dereference(crash_vmclear_loaded_vmcss) to do_vmclear_operation: arch/x86/kernel/crash.c:49:30: warning: incorrect type in assignment (d= ifferent modifiers) arch/x86/kernel/crash.c:49:30: expected void ( *do_vmclear_operation= )( ... ) arch/x86/kernel/crash.c:49:30: got void ( [noderef] * )( ..= =2E ) arch/x86/kernel/crash.c:49:30: warning: incorrect type in assignment (d= ifferent modifiers) arch/x86/kernel/crash.c:49:30: expected void ( *do_vmclear_operation= )( ... ) arch/x86/kernel/crash.c:49:30: got void ( [noderef] * )( ..= =2E ) So I made the #define to cast its type. If you have any suggestion, that'll be helpful. Thanks Zhang Yanfei