|
@@ -96,19 +96,23 @@ void __show_regs(struct pt_regs *regs)
|
|
|
unsigned long flags;
|
|
|
char buf[64];
|
|
|
#ifndef CONFIG_CPU_V7M
|
|
|
- unsigned int domain;
|
|
|
+ unsigned int domain, fs;
|
|
|
#ifdef CONFIG_CPU_SW_DOMAIN_PAN
|
|
|
/*
|
|
|
* Get the domain register for the parent context. In user
|
|
|
* mode, we don't save the DACR, so lets use what it should
|
|
|
* be. For other modes, we place it after the pt_regs struct.
|
|
|
*/
|
|
|
- if (user_mode(regs))
|
|
|
+ if (user_mode(regs)) {
|
|
|
domain = DACR_UACCESS_ENABLE;
|
|
|
- else
|
|
|
+ fs = get_fs();
|
|
|
+ } else {
|
|
|
domain = to_svc_pt_regs(regs)->dacr;
|
|
|
+ fs = to_svc_pt_regs(regs)->addr_limit;
|
|
|
+ }
|
|
|
#else
|
|
|
domain = get_domain();
|
|
|
+ fs = get_fs();
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
@@ -144,7 +148,7 @@ void __show_regs(struct pt_regs *regs)
|
|
|
if ((domain & domain_mask(DOMAIN_USER)) ==
|
|
|
domain_val(DOMAIN_USER, DOMAIN_NOACCESS))
|
|
|
segment = "none";
|
|
|
- else if (get_fs() == get_ds())
|
|
|
+ else if (fs == get_ds())
|
|
|
segment = "kernel";
|
|
|
else
|
|
|
segment = "user";
|