Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1281701 > unrolled thread

RE: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly

Started by河合英宏 / KAWAI,HIDEHIRO <hidehiro.kawai.ez@hitachi.com>
First post2015-12-02 13:00 +0100
Last post2015-12-03 13:30 +0100
Articles 6 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  RE: [V5 PATCH 3/4] kexec: Fix race between panic() and  crash_kexec() called directly 河合英宏 / KAWAI,HIDEHIRO   <hidehiro.kawai.ez@hitachi.com> - 2015-12-02 13:00 +0100
    Re: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec()  called directly Borislav Petkov <bp@alien8.de> - 2015-12-02 16:50 +0100
      RE: [V5 PATCH 3/4] kexec: Fix race between panic() and  crash_kexec() called directly 河合英宏 / KAWAI,HIDEHIRO   <hidehiro.kawai.ez@hitachi.com> - 2015-12-03 03:10 +0100
        Re: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec()  called directly Borislav Petkov <bp@alien8.de> - 2015-12-03 10:40 +0100
          RE: [V5 PATCH 3/4] kexec: Fix race between panic() and  crash_kexec() called directly 河合英宏 / KAWAI,HIDEHIRO   <hidehiro.kawai.ez@hitachi.com> - 2015-12-03 12:30 +0100
            Re: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec()  called directly Borislav Petkov <bp@alien8.de> - 2015-12-03 13:30 +0100

#1281701 — RE: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly

From河合英宏 / KAWAI,HIDEHIRO <hidehiro.kawai.ez@hitachi.com>
Date2015-12-02 13:00 +0100
SubjectRE: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly
Message-ID<qBeeK-6GK-11@gated-at.bofh.it>
SGVsbG8gQm9yaXNsYXYsDQoNClNvcnJ5LCBJIGhhdmVuJ3QgcmVwbGllZCB0byB0aGlzIG1haWwg
eWV0Lg0KDQo+IE9uIEZyaSwgTm92IDIwLCAyMDE1IGF0IDA2OjM2OjQ4UE0gKzA5MDAsIEhpZGVo
aXJvIEthd2FpIHdyb3RlOg0KLi4uDQo+ID4gK3ZvaWQgY3Jhc2hfa2V4ZWMoc3RydWN0IHB0X3Jl
Z3MgKnJlZ3MpDQo+ID4gK3sNCj4gPiArCWludCBvbGRfY3B1LCB0aGlzX2NwdTsNCj4gPiArDQo+
ID4gKwkvKg0KPiA+ICsJICogT25seSBvbmUgQ1BVIGlzIGFsbG93ZWQgdG8gZXhlY3V0ZSB0aGUg
Y3Jhc2hfa2V4ZWMoKSBjb2RlIGFzIHdpdGgNCj4gPiArCSAqIHBhbmljKCkuICBPdGhlcndpc2Ug
cGFyYWxsZWwgY2FsbHMgb2YgcGFuaWMoKSBhbmQgY3Jhc2hfa2V4ZWMoKQ0KPiA+ICsJICogbWF5
IHN0b3AgZWFjaCBvdGhlci4gIFRvIGV4Y2x1ZGUgdGhlbSwgd2UgdXNlIHBhbmljX2NwdSBoZXJl
IHRvby4NCj4gPiArCSAqLw0KPiA+ICsJdGhpc19jcHUgPSByYXdfc21wX3Byb2Nlc3Nvcl9pZCgp
Ow0KPiA+ICsJb2xkX2NwdSA9IGF0b21pY19jbXB4Y2hnKCZwYW5pY19jcHUsIC0xLCB0aGlzX2Nw
dSk7DQo+ID4gKwlpZiAob2xkX2NwdSA9PSAtMSkgew0KPiA+ICsJCS8qIFRoaXMgaXMgdGhlIDFz
dCBDUFUgd2hpY2ggY29tZXMgaGVyZSwgc28gZ28gYWhlYWQuICovDQo+ID4gKwkJX19jcmFzaF9r
ZXhlYyhyZWdzKTsNCj4gPiArDQo+ID4gKwkJLyoNCj4gPiArCQkgKiBSZXNldCBwYW5pY19jcHUg
dG8gYWxsb3cgYW5vdGhlciBwYW5pYygpL2NyYXNoX2tleGVjKCkNCj4gPiArCQkgKiBjYWxsLg0K
PiANCj4gU28gY2FuIHdlIG1ha2UgX19jcmFzaF9rZXhlYygpIHJldHVybiBlcnJvciB2YWx1ZXM/
DQo+IA0KPiAqIGZhaWxlZCB0byBncmFiIGtleGVjX211dGV4IC0+IHJlc2V0IHBhbmljX2NwdQ0K
PiANCj4gKiBubyBrZXhlY19jcmFzaF9pbWFnZSAtPiBubyBuZWVkIHRvIHJlc2V0IGl0LCBhbGwg
ZnV0dXJlIGNyYXNoX2tleGVjKCkNCj4gY2FsbHMgd29uJ3Qgd29yayBzbyBubyBuZWVkIHRvIHJ1
biBpbnRvIHRoYXQgcGF0aCBhbnltb3JlLiBIb3dldmVyLCB0aGlzIGNvdWxkDQo+IGJlIHByb2Js
ZW1hdGljIGlmIHdlIHdhbnQgdGhlIG90aGVyIENQVXMgdG8gcGFuaWMuIERvIHdlIGNhcmU/DQo+
IA0KPiAqIG1hY2hpbmVfa2V4ZWMgc3VjY2Vzc2Z1bCAtPiBkb2Vzbid0IG1hdHRlcg0KDQpXZSBj
YW4gZG8gc28sIGJ1dCBJIHRoaW5rIHJlc2V0dGluZyBwYW5pY19jcHUgYWx3YXlzIHdvdWxkIGJl
DQpzaW1wbGVyIGFuZCBzYWZlci4NCg0KQWx0aG91Z2ggY2hlY2tpbmcga2V4ZWNfY3Jhc2hfaW1h
Z2UgZWFjaCB0aW1lIGlzIHBvaW50bGVzcywgaXQNCmRvZXNuJ3QgY2F1c2UgYW55IGFjdHVhbCBw
cm9ibGVtLg0KDQpSZWdhcmRzLA0KDQotLQ0KSGlkZWhpcm8gS2F3YWkNCkhpdGFjaGksIEx0ZC4g
UmVzZWFyY2ggJiBEZXZlbG9wbWVudCBHcm91cA0KDQo=
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1281927 — Re: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly

FromBorislav Petkov <bp@alien8.de>
Date2015-12-02 16:50 +0100
SubjectRe: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly
Message-ID<qBhPk-FC-35@gated-at.bofh.it>
In reply to#1281701
On Wed, Dec 02, 2015 at 11:57:38AM +0000, 河合英宏 / KAWAI,HIDEHIRO wrote:
> We can do so, but I think resetting panic_cpu always would be
> simpler and safer.

Well, I think executing code needlessly *especially* at panic time is
not all that rosy either.

Besides something like this:

	static bool kexec_failed;

	...

        if (crash_kexec_post_notifiers && !kexec_failed)
		kexec_failed = __crash_kexec(NULL);

is as simple as it gets.

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1282646

From河合英宏 / KAWAI,HIDEHIRO <hidehiro.kawai.ez@hitachi.com>
Date2015-12-03 03:10 +0100
Message-ID<qBrvk-749-9@gated-at.bofh.it>
In reply to#1281927
PiBPbiBXZWQsIERlYyAwMiwgMjAxNSBhdCAxMTo1NzozOEFNICswMDAwLCDmsrPlkIjoi7Hlro8g
LyBLQVdBSe+8jEhJREVISVJPIHdyb3RlOg0KPiA+IFdlIGNhbiBkbyBzbywgYnV0IEkgdGhpbmsg
cmVzZXR0aW5nIHBhbmljX2NwdSBhbHdheXMgd291bGQgYmUNCj4gPiBzaW1wbGVyIGFuZCBzYWZl
ci4NCg0KSSdsbCBzdGF0ZSBpbiBkZXRhaWwuDQoNCldoZW4gd2UgY2FsbCBjcmFzaF9rZXhlYygp
IHdpdGhvdXQgZW50ZXJpbmcgcGFuaWMoKSBhbmQgcmV0dXJuIGZyb20NCml0LCBwYW5pYygpIHNo
b3VsZCBiZSBjYWxsZWQgZXZlbnR1YWxseS4gIEJ1dCB0aGUgY29kZSBwYXRocyBhcmUNCmEgYml0
IGNvbXBsaWNhdGVkIGFuZCB0aGVyZSBhcmUgbWFueSBpbXBsZW1lbnRhdGlvbnMgZm9yIGVhY2gN
CmFyY2hpdGVjdHVyZS4gIFNvIG9uZSBkYXksIHRoaXMgYXNzdW1wdGlvbiBtYXkgYmUgYnJva2Vu
OyB0aGUgQ1BVDQpkb2Vzbid0IGNhbGwgcGFuaWMoKS4gIE9yIHRoZSBDUFUgbWF5IGZhaWwgdG8g
Y2FsbCBwYW5pYygpIGJlY2F1c2UNCndlIGFyZSBhbHJlYWR5IGluIGluc2FuZSBzdGF0ZS4gIEl0
IHdvdWxkIGJlIG5lcnZvdXMsIGJ1dCBhbGxvd2luZw0KYW5vdGhlciBDUFUgdG8gcHJvY2VzcyBw
YW5pYyByb3V0aW5lcyBieSByZXNldHRpbmcgcGFuaWNfY3B1DQppcyBzYWZlciBhcHByb2FjaC4N
Cg0KPiBXZWxsLCBJIHRoaW5rIGV4ZWN1dGluZyBjb2RlIG5lZWRsZXNzbHkgKmVzcGVjaWFsbHkq
IGF0IHBhbmljIHRpbWUgaXMNCj4gbm90IGFsbCB0aGF0IHJvc3kgZWl0aGVyLg0KPiANCj4gQmVz
aWRlcyBzb21ldGhpbmcgbGlrZSB0aGlzOg0KPiANCj4gCXN0YXRpYyBib29sIGtleGVjX2ZhaWxl
ZDsNCj4gDQo+IAkuLi4NCj4gDQo+ICAgICAgICAgaWYgKGNyYXNoX2tleGVjX3Bvc3Rfbm90aWZp
ZXJzICYmICFrZXhlY19mYWlsZWQpDQo+IAkJa2V4ZWNfZmFpbGVkID0gX19jcmFzaF9rZXhlYyhO
VUxMKTsNCj4gDQo+IGlzIGFzIHNpbXBsZSBhcyBpdCBnZXRzLg0KDQpTaW5jZSB0aGlzIGNvZGUg
aXMgZXhlY3V0ZWQgb25seSBvbmNlIGR1ZSB0byBwYW5pY19jcHUsDQpJIHRoaW5rIGludHJvZHVj
aW5nIHRoaXMgbG9naWMgaXMgbm90IG11Y2ggdmFsdWFibGUuDQpBbHNvLCBjdXJyZW50IGltcGxl
bWVudGF0aW9uIGlzIGFscmVhZHkgcXVpdGUgc2ltcGxlOg0KDQpwYW5pYygpDQp7DQouLi4NCglf
X2NyYXNoX2tleGVjKE5VTEwpIHsNCgkJaWYgKG11dGV4X3RyeWxvY2soJmtleGVjX211dGV4KSkg
ew0KCQkJaWYgKGtleGVjX2NyYXNoX2ltYWdlKSB7DQoJCQkJLyogZG9uJ3QgcmV0dXJuICovDQoJ
CQl9DQoJCX0NCgkJbXV0ZXhfdW5sb2NrKCZrZXhlY19tdXRleCkNCgl9DQoNCkhvdyBkbyB5b3Ug
dGhpbms/DQoNClJlZ2FyZHMsDQotLQ0KSGlkZWhpcm8gS2F3YWkNCkhpdGFjaGksIEx0ZC4gUmVz
ZWFyY2ggJiBEZXZlbG9wbWVudCBHcm91cA0KDQoNCg==
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1282849 — Re: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly

FromBorislav Petkov <bp@alien8.de>
Date2015-12-03 10:40 +0100
SubjectRe: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly
Message-ID<qBywO-38I-23@gated-at.bofh.it>
In reply to#1282646
On Thu, Dec 03, 2015 at 02:01:38AM +0000, 河合英宏 / KAWAI,HIDEHIRO wrote:
> > On Wed, Dec 02, 2015 at 11:57:38AM +0000, 河合英宏 / KAWAI,HIDEHIRO wrote:
> > > We can do so, but I think resetting panic_cpu always would be
> > > simpler and safer.
> 
> I'll state in detail.
> 
> When we call crash_kexec() without entering panic() and return from
> it, panic() should be called eventually.

Huh, the call chain is

panic->crash_kexec

Or do you mean, when crash_kexec() is not called by panic() but by some
of its other callers?

> But the code paths are a bit complicated and there are many
> implementations for each architecture. So one day, this assumption may
> be broken; the CPU doesn't call panic(). Or the CPU may fail to call
> panic() because we are already in insane state. It would be nervous,
> but allowing another CPU to process panic routines by resetting
> panic_cpu is safer approach.

My suggestion was to do this only on the panic path - not necessarily on
the others.

> Since this code is executed only once due to panic_cpu,
> I think introducing this logic is not much valuable.
> Also, current implementation is already quite simple:
> 
> panic()
> {
> ...
> 	__crash_kexec(NULL) {
> 		if (mutex_trylock(&kexec_mutex)) {
> 			if (kexec_crash_image) {
> 				/* don't return */
> 			}

I don't mean the kexec_crash_image case - I mean the opposite one:
!kexec_crash_image. And I think I know now what you're trying to tell
me: the first CPU which hits panic, will finish panic eventually and so
it will take down the machine.

Every other CPU which happens to enter panic in between the first CPU
and the machine being taken down, doesn't matter because, well, who
cares, we're panicking already.

Am I close?

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1282960

From河合英宏 / KAWAI,HIDEHIRO <hidehiro.kawai.ez@hitachi.com>
Date2015-12-03 12:30 +0100
Message-ID<qBAfg-4hh-21@gated-at.bofh.it>
In reply to#1282849
PiBPbiBUaHUsIERlYyAwMywgMjAxNSBhdCAwMjowMTozOEFNICswMDAwLCDmsrPlkIjoi7Hlro8g
LyBLQVdBSe+8jEhJREVISVJPIHdyb3RlOg0KPiA+ID4gT24gV2VkLCBEZWMgMDIsIDIwMTUgYXQg
MTE6NTc6MzhBTSArMDAwMCwg5rKz5ZCI6Iux5a6PIC8gS0FXQUnvvIxISURFSElSTyB3cm90ZToN
Cj4gPiA+ID4gV2UgY2FuIGRvIHNvLCBidXQgSSB0aGluayByZXNldHRpbmcgcGFuaWNfY3B1IGFs
d2F5cyB3b3VsZCBiZQ0KPiA+ID4gPiBzaW1wbGVyIGFuZCBzYWZlci4NCj4gPg0KPiA+IEknbGwg
c3RhdGUgaW4gZGV0YWlsLg0KPiA+DQo+ID4gV2hlbiB3ZSBjYWxsIGNyYXNoX2tleGVjKCkgd2l0
aG91dCBlbnRlcmluZyBwYW5pYygpIGFuZCByZXR1cm4gZnJvbQ0KPiA+IGl0LCBwYW5pYygpIHNo
b3VsZCBiZSBjYWxsZWQgZXZlbnR1YWxseS4NCj4gDQo+IEh1aCwgdGhlIGNhbGwgY2hhaW4gaXMN
Cj4gDQo+IHBhbmljLT5jcmFzaF9rZXhlYw0KPiANCj4gT3IgZG8geW91IG1lYW4sIHdoZW4gY3Jh
c2hfa2V4ZWMoKSBpcyBub3QgY2FsbGVkIGJ5IHBhbmljKCkgYnV0IGJ5IHNvbWUNCj4gb2YgaXRz
IG90aGVyIGNhbGxlcnM/DQoNCkkgd2FzIGFyZ3VpbmcgYWJvdXQgdGhlIGNhc2Ugb2Ygb29wc19l
bmQgLS0+IGNyYXNoX2tleGVjDQotLT4gcmV0dXJuIGZyb20gY3Jhc2hfa2V4ZWMgYmVjYXVzZSBv
ZiAha2V4ZWNfY3Jhc2hfaW1hZ2UgLS0+DQpwYW5pYy4NCg0KSW4gdGhlIGNhc2Ugb2YgcGFuaWMg
LS0+IF9fY3Jhc2hfa2V4ZWMsIF9fY3Jhc2hfa2V4ZWMgaXMgY2FsbGVkDQpvbmx5IG9uY2UsIHNv
IHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBfX2NyYXNoX2tleGVj
DQphcyB5b3Ugc3VnZ2VzdGVkLiAgU28gSSB0aG91Z2h0IHlvdSBzdGF0ZWQgYWJvdXQgY3Jhc2hf
a2V4ZWMgLS0+IHBhbmljDQpjYXNlLg0KDQo+ID4gQnV0IHRoZSBjb2RlIHBhdGhzIGFyZSBhIGJp
dCBjb21wbGljYXRlZCBhbmQgdGhlcmUgYXJlIG1hbnkNCj4gPiBpbXBsZW1lbnRhdGlvbnMgZm9y
IGVhY2ggYXJjaGl0ZWN0dXJlLiBTbyBvbmUgZGF5LCB0aGlzIGFzc3VtcHRpb24gbWF5DQo+ID4g
YmUgYnJva2VuOyB0aGUgQ1BVIGRvZXNuJ3QgY2FsbCBwYW5pYygpLiBPciB0aGUgQ1BVIG1heSBm
YWlsIHRvIGNhbGwNCj4gPiBwYW5pYygpIGJlY2F1c2Ugd2UgYXJlIGFscmVhZHkgaW4gaW5zYW5l
IHN0YXRlLiBJdCB3b3VsZCBiZSBuZXJ2b3VzLA0KPiA+IGJ1dCBhbGxvd2luZyBhbm90aGVyIENQ
VSB0byBwcm9jZXNzIHBhbmljIHJvdXRpbmVzIGJ5IHJlc2V0dGluZw0KPiA+IHBhbmljX2NwdSBp
cyBzYWZlciBhcHByb2FjaC4NCj4gDQo+IE15IHN1Z2dlc3Rpb24gd2FzIHRvIGRvIHRoaXMgb25s
eSBvbiB0aGUgcGFuaWMgcGF0aCAtIG5vdCBuZWNlc3NhcmlseSBvbg0KPiB0aGUgb3RoZXJzLg0K
PiANCj4gPiBTaW5jZSB0aGlzIGNvZGUgaXMgZXhlY3V0ZWQgb25seSBvbmNlIGR1ZSB0byBwYW5p
Y19jcHUsDQo+ID4gSSB0aGluayBpbnRyb2R1Y2luZyB0aGlzIGxvZ2ljIGlzIG5vdCBtdWNoIHZh
bHVhYmxlLg0KPiA+IEFsc28sIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgYWxyZWFkeSBxdWl0
ZSBzaW1wbGU6DQo+ID4NCj4gPiBwYW5pYygpDQo+ID4gew0KPiA+IC4uLg0KPiA+IAlfX2NyYXNo
X2tleGVjKE5VTEwpIHsNCj4gPiAJCWlmIChtdXRleF90cnlsb2NrKCZrZXhlY19tdXRleCkpIHsN
Cj4gPiAJCQlpZiAoa2V4ZWNfY3Jhc2hfaW1hZ2UpIHsNCj4gPiAJCQkJLyogZG9uJ3QgcmV0dXJu
ICovDQo+ID4gCQkJfQ0KPiANCj4gSSBkb24ndCBtZWFuIHRoZSBrZXhlY19jcmFzaF9pbWFnZSBj
YXNlIC0gSSBtZWFuIHRoZSBvcHBvc2l0ZSBvbmU6DQo+ICFrZXhlY19jcmFzaF9pbWFnZS4NCg0K
SSBhbHNvIG1lbnRpb25lZCAha2V4ZWNfY3Jhc2hfaW1hZ2UgY2FzZS4uLg0KDQo+IEFuZCBJIHRo
aW5rIEkga25vdyBub3cgd2hhdCB5b3UncmUgdHJ5aW5nIHRvIHRlbGwNCj4gbWU6IHRoZSBmaXJz
dCBDUFUgd2hpY2ggaGl0cyBwYW5pYywgd2lsbCBmaW5pc2ggcGFuaWMgZXZlbnR1YWxseSBhbmQg
c28NCj4gaXQgd2lsbCB0YWtlIGRvd24gdGhlIG1hY2hpbmUuDQoNCk5vLiAgVGhlIGZpcnN0IENQ
VSBjYWxscyBwYW5pYywgYW5kIHRoZW4gaXQgY2FsbHMgX19jcmFzaF9rZXhlYy4NCkJlY2F1c2Ug
b2YgIWtleGVjX2NyYXNoX2ltYWdlLCBpdCByZXR1cm5zIGZyb20gX19jcmFzaF9rZXhlYyBhbmQN
CmNvbnRpbnVlcyB0byB0aGUgcGFuaWMgcHJvY2VkdXJlLiAgQXQgdGhlIHNhbWUgdGltZSwgYW5v
dGhlciBDUFUNCnRyaWVzIHRvIGNhbGwgcGFuaWMoKSwgYnV0IGl0IGRvZXNuJ3QgcnVuIHRoZSBw
YW5pYyBwcm9jZWR1cmU7DQpwYW5pY19jcHUgcHJldmVudHMgdGhlIHNlY29uZCBDUFUgZnJvbSBy
dW5uaW5nIGl0Lg0KVGhpcyBtZWFucyBfX2NyYXNoX2tleGVjIGlzIGNhbGxlZCBvbmx5IG9uY2Ug
ZXZlbiBpZiB3ZSBkb24ndA0KY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBfX2NyYXNoX2tleGVj
Lg0KKFBsZWFzZSBub3RlIHRoYXQgY3Jhc2hfa2V4ZWMgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcyBpbiB0aGUNCmNhc2Ugb2Ygb29wc19lbmQoKSAtLT4gY3Jhc2hfa2V4ZWMoKS4pDQoNCkkn
bSBzb3JyeSBJIGNvdWxkbid0IHRlbGwgbXkgdGhvdWdodCB3ZWxsLg0KDQpSZWdhcmRzLA0KLS0N
CkhpZGVoaXJvIEthd2FpDQpIaXRhY2hpLCBMdGQuIFJlc2VhcmNoICYgRGV2ZWxvcG1lbnQgR3Jv
dXANCg0KDQo=
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1282994 — Re: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly

FromBorislav Petkov <bp@alien8.de>
Date2015-12-03 13:30 +0100
SubjectRe: [V5 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly
Message-ID<qBBbl-4U8-27@gated-at.bofh.it>
In reply to#1282960
On Thu, Dec 03, 2015 at 11:29:21AM +0000, 河合英宏 / KAWAI,HIDEHIRO wrote:
> I was arguing about the case of oops_end --> crash_kexec
> --> return from crash_kexec because of !kexec_crash_image -->
> panic.

Aha.

> In the case of panic --> __crash_kexec, __crash_kexec is called
> only once, so we don't need to check the return value of __crash_kexec
> as you suggested.  So I thought you stated about crash_kexec --> panic
> case.

No, I meant the other way around.

> I also mentioned !kexec_crash_image case...

I must've missed it.

> No.  The first CPU calls panic, and then it calls __crash_kexec.
> Because of !kexec_crash_image, it returns from __crash_kexec and
> continues to the panic procedure.  At the same time, another CPU
> tries to call panic(), but it doesn't run the panic procedure;
> panic_cpu prevents the second CPU from running it.
>
> This means __crash_kexec is called only once even if we don't
> check the return value of __crash_kexec.

I think we're on the same page, even if we express it differently - the
other CPUs entering panic() will loop in panic_smp_self_stop() so they
won't reach __crash_kexec().

> (Please note that crash_kexec can be called multiple times in the
> case of oops_end() --> crash_kexec().)

Right, and that was the case that was bugging me - calling into
crash_kexec() on multiple CPUs but it is a trylock and a pointer test -
I guess that's diminishingly small overhead to care.

Thanks.

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web