get rid of legacy 'get_ds()' function
Every in-kernel use of this function defined it to KERNEL_DS (either as an actual define, or as an inline function). It's an entirely historical artifact, and long long long ago used to actually read the segment selector valueof '%ds' on x86. Which in the kernel is always KERNEL_DS. Inspired by a patch from Jann Horn that just did this for a very small subset of users (the ones in fs/), along with Al who suggested a script. I then just took it to the logical extreme and removed all the remaining gunk. Roughly scripted with git grep -l '(get_ds())' -- :^tools/ | xargs sed -i 's/(get_ds())/(KERNEL_DS)/' git grep -lw 'get_ds' -- :^tools/ | xargs sed -i '/^#define get_ds()/d' plus manual fixups to remove a few unusual usage patterns, the couple of inline function cases and to fix up a comment that had become stale. The 'get_ds()' function remains in an x86 kvm selftest, since in user space it actually does something relevant. Inspired-by: Jann Horn <jannh@google.com> Inspired-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
@@ -37,7 +37,6 @@ extern int fixup_exception(struct pt_regs *regs);
|
||||
#define KERNEL_DS ((mm_segment_t) { ~0UL })
|
||||
#define USER_DS ((mm_segment_t) {TASK_SIZE - 1})
|
||||
|
||||
#define get_ds() (KERNEL_DS)
|
||||
#define get_fs() (current_thread_info()->addr_limit)
|
||||
#define user_addr_max get_fs
|
||||
|
||||
|
@@ -121,7 +121,7 @@ void show_regs(struct pt_regs *regs)
|
||||
regs->uregs[3], regs->uregs[2], regs->uregs[1], regs->uregs[0]);
|
||||
pr_info(" IRQs o%s Segment %s\n",
|
||||
interrupts_enabled(regs) ? "n" : "ff",
|
||||
segment_eq(get_fs(), get_ds())? "kernel" : "user");
|
||||
segment_eq(get_fs(), KERNEL_DS)? "kernel" : "user");
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(show_regs);
|
||||
|
Reference in New Issue
Block a user