All of lore.kernel.org
 help / color / mirror / Atom feed
From: Palmer Dabbelt <palmer@dabbelt.com>
To: Christoph Hellwig <hch@lst.de>
Cc: Paul Walmsley <paul.walmsley@sifive.com>,
	Arnd Bergmann <arnd@arndb.de>,
	viro@zeniv.linux.org.uk, linux-riscv@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [PATCH 8/8] riscv: remove address space overrides using set_fs()
Date: Tue, 08 Sep 2020 21:59:28 -0700 (PDT)	[thread overview]
Message-ID: <mhng-ca158d54-5e36-4407-a4da-097c9ddc7dfc@palmerdabbelt-glaptop1> (raw)
In-Reply-To: <20200907055825.1917151-9-hch@lst.de>

On Sun, 06 Sep 2020 22:58:25 PDT (-0700), Christoph Hellwig wrote:
> Stop providing the possibility to override the address space using
> set_fs() now that there is no need for that any more.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  arch/riscv/Kconfig                   |  1 -
>  arch/riscv/include/asm/thread_info.h |  6 ------
>  arch/riscv/include/asm/uaccess.h     | 27 +--------------------------
>  arch/riscv/kernel/process.c          |  1 -
>  4 files changed, 1 insertion(+), 34 deletions(-)
>
> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> index 460e3971a80fde..33dde87218ddab 100644
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -86,7 +86,6 @@ config RISCV
>  	select SPARSE_IRQ
>  	select SYSCTL_EXCEPTION_TRACE
>  	select THREAD_INFO_IN_TASK
> -	select SET_FS
>  	select UACCESS_MEMCPY if !MMU
>
>  config ARCH_MMAP_RND_BITS_MIN
> diff --git a/arch/riscv/include/asm/thread_info.h b/arch/riscv/include/asm/thread_info.h
> index 464a2bbc97ea33..a390711129de64 100644
> --- a/arch/riscv/include/asm/thread_info.h
> +++ b/arch/riscv/include/asm/thread_info.h
> @@ -24,10 +24,6 @@
>  #include <asm/processor.h>
>  #include <asm/csr.h>
>
> -typedef struct {
> -	unsigned long seg;
> -} mm_segment_t;
> -
>  /*
>   * low level task data that entry.S needs immediate access to
>   * - this struct should fit entirely inside of one cache line
> @@ -39,7 +35,6 @@ typedef struct {
>  struct thread_info {
>  	unsigned long		flags;		/* low level flags */
>  	int                     preempt_count;  /* 0=>preemptible, <0=>BUG */
> -	mm_segment_t		addr_limit;
>  	/*
>  	 * These stack pointers are overwritten on every system call or
>  	 * exception.  SP is also saved to the stack it can be recovered when
> @@ -59,7 +54,6 @@ struct thread_info {
>  {						\
>  	.flags		= 0,			\
>  	.preempt_count	= INIT_PREEMPT_COUNT,	\
> -	.addr_limit	= KERNEL_DS,		\
>  }
>
>  #endif /* !__ASSEMBLY__ */
> diff --git a/arch/riscv/include/asm/uaccess.h b/arch/riscv/include/asm/uaccess.h
> index 264e52fb62b143..c47e6b35c551f4 100644
> --- a/arch/riscv/include/asm/uaccess.h
> +++ b/arch/riscv/include/asm/uaccess.h
> @@ -26,29 +26,6 @@
>  #define __disable_user_access()							\
>  	__asm__ __volatile__ ("csrc sstatus, %0" : : "r" (SR_SUM) : "memory")
>
> -/*
> - * The fs value determines whether argument validity checking should be
> - * performed or not.  If get_fs() == USER_DS, checking is performed, with
> - * get_fs() == KERNEL_DS, checking is bypassed.
> - *
> - * For historical reasons, these macros are grossly misnamed.
> - */
> -
> -#define MAKE_MM_SEG(s)	((mm_segment_t) { (s) })
> -
> -#define KERNEL_DS	MAKE_MM_SEG(~0UL)
> -#define USER_DS		MAKE_MM_SEG(TASK_SIZE)
> -
> -#define get_fs()	(current_thread_info()->addr_limit)
> -
> -static inline void set_fs(mm_segment_t fs)
> -{
> -	current_thread_info()->addr_limit = fs;
> -}
> -
> -#define uaccess_kernel() (get_fs().seg == KERNEL_DS.seg)
> -#define user_addr_max()	(get_fs().seg)
> -
>  /**
>   * access_ok: - Checks if a user space pointer is valid
>   * @addr: User space pointer to start of block to check
> @@ -76,9 +53,7 @@ static inline void set_fs(mm_segment_t fs)
>   */
>  static inline int __access_ok(unsigned long addr, unsigned long size)
>  {
> -	const mm_segment_t fs = get_fs();
> -
> -	return size <= fs.seg && addr <= fs.seg - size;
> +	return size <= TASK_SIZE && addr <= TASK_SIZE - size;
>  }
>
>  /*
> diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c
> index 2b97c493427c9e..19225ec65db62f 100644
> --- a/arch/riscv/kernel/process.c
> +++ b/arch/riscv/kernel/process.c
> @@ -84,7 +84,6 @@ void start_thread(struct pt_regs *regs, unsigned long pc,
>  	}
>  	regs->epc = pc;
>  	regs->sp = sp;
> -	set_fs(USER_DS);
>  }
>
>  void flush_thread(void)

Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
Acked-by: Palmer Dabbelt <palmerdabbelt@google.com>

WARNING: multiple messages have this Message-ID (diff)
From: Palmer Dabbelt <palmer@dabbelt.com>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-arch@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
	linux-kernel@vger.kernel.org, viro@zeniv.linux.org.uk,
	Paul Walmsley <paul.walmsley@sifive.com>,
	linux-riscv@lists.infradead.org
Subject: Re: [PATCH 8/8] riscv: remove address space overrides using set_fs()
Date: Tue, 08 Sep 2020 21:59:28 -0700 (PDT)	[thread overview]
Message-ID: <mhng-ca158d54-5e36-4407-a4da-097c9ddc7dfc@palmerdabbelt-glaptop1> (raw)
In-Reply-To: <20200907055825.1917151-9-hch@lst.de>

On Sun, 06 Sep 2020 22:58:25 PDT (-0700), Christoph Hellwig wrote:
> Stop providing the possibility to override the address space using
> set_fs() now that there is no need for that any more.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  arch/riscv/Kconfig                   |  1 -
>  arch/riscv/include/asm/thread_info.h |  6 ------
>  arch/riscv/include/asm/uaccess.h     | 27 +--------------------------
>  arch/riscv/kernel/process.c          |  1 -
>  4 files changed, 1 insertion(+), 34 deletions(-)
>
> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> index 460e3971a80fde..33dde87218ddab 100644
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -86,7 +86,6 @@ config RISCV
>  	select SPARSE_IRQ
>  	select SYSCTL_EXCEPTION_TRACE
>  	select THREAD_INFO_IN_TASK
> -	select SET_FS
>  	select UACCESS_MEMCPY if !MMU
>
>  config ARCH_MMAP_RND_BITS_MIN
> diff --git a/arch/riscv/include/asm/thread_info.h b/arch/riscv/include/asm/thread_info.h
> index 464a2bbc97ea33..a390711129de64 100644
> --- a/arch/riscv/include/asm/thread_info.h
> +++ b/arch/riscv/include/asm/thread_info.h
> @@ -24,10 +24,6 @@
>  #include <asm/processor.h>
>  #include <asm/csr.h>
>
> -typedef struct {
> -	unsigned long seg;
> -} mm_segment_t;
> -
>  /*
>   * low level task data that entry.S needs immediate access to
>   * - this struct should fit entirely inside of one cache line
> @@ -39,7 +35,6 @@ typedef struct {
>  struct thread_info {
>  	unsigned long		flags;		/* low level flags */
>  	int                     preempt_count;  /* 0=>preemptible, <0=>BUG */
> -	mm_segment_t		addr_limit;
>  	/*
>  	 * These stack pointers are overwritten on every system call or
>  	 * exception.  SP is also saved to the stack it can be recovered when
> @@ -59,7 +54,6 @@ struct thread_info {
>  {						\
>  	.flags		= 0,			\
>  	.preempt_count	= INIT_PREEMPT_COUNT,	\
> -	.addr_limit	= KERNEL_DS,		\
>  }
>
>  #endif /* !__ASSEMBLY__ */
> diff --git a/arch/riscv/include/asm/uaccess.h b/arch/riscv/include/asm/uaccess.h
> index 264e52fb62b143..c47e6b35c551f4 100644
> --- a/arch/riscv/include/asm/uaccess.h
> +++ b/arch/riscv/include/asm/uaccess.h
> @@ -26,29 +26,6 @@
>  #define __disable_user_access()							\
>  	__asm__ __volatile__ ("csrc sstatus, %0" : : "r" (SR_SUM) : "memory")
>
> -/*
> - * The fs value determines whether argument validity checking should be
> - * performed or not.  If get_fs() == USER_DS, checking is performed, with
> - * get_fs() == KERNEL_DS, checking is bypassed.
> - *
> - * For historical reasons, these macros are grossly misnamed.
> - */
> -
> -#define MAKE_MM_SEG(s)	((mm_segment_t) { (s) })
> -
> -#define KERNEL_DS	MAKE_MM_SEG(~0UL)
> -#define USER_DS		MAKE_MM_SEG(TASK_SIZE)
> -
> -#define get_fs()	(current_thread_info()->addr_limit)
> -
> -static inline void set_fs(mm_segment_t fs)
> -{
> -	current_thread_info()->addr_limit = fs;
> -}
> -
> -#define uaccess_kernel() (get_fs().seg == KERNEL_DS.seg)
> -#define user_addr_max()	(get_fs().seg)
> -
>  /**
>   * access_ok: - Checks if a user space pointer is valid
>   * @addr: User space pointer to start of block to check
> @@ -76,9 +53,7 @@ static inline void set_fs(mm_segment_t fs)
>   */
>  static inline int __access_ok(unsigned long addr, unsigned long size)
>  {
> -	const mm_segment_t fs = get_fs();
> -
> -	return size <= fs.seg && addr <= fs.seg - size;
> +	return size <= TASK_SIZE && addr <= TASK_SIZE - size;
>  }
>
>  /*
> diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c
> index 2b97c493427c9e..19225ec65db62f 100644
> --- a/arch/riscv/kernel/process.c
> +++ b/arch/riscv/kernel/process.c
> @@ -84,7 +84,6 @@ void start_thread(struct pt_regs *regs, unsigned long pc,
>  	}
>  	regs->epc = pc;
>  	regs->sp = sp;
> -	set_fs(USER_DS);
>  }
>
>  void flush_thread(void)

Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
Acked-by: Palmer Dabbelt <palmerdabbelt@google.com>

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

  reply	other threads:[~2020-09-09  4:59 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-07  5:58 remove set_fs for riscv v2 Christoph Hellwig
2020-09-07  5:58 ` Christoph Hellwig
2020-09-07  5:58 ` [PATCH 1/8] uaccess: provide a generic TASK_SIZE_MAX definition Christoph Hellwig
2020-09-07  5:58   ` Christoph Hellwig
2020-09-07  5:58 ` [PATCH 2/8] asm-generic: improve the nommu {get,put}_user handling Christoph Hellwig
2020-09-07  5:58   ` Christoph Hellwig
2020-09-07  5:58 ` [PATCH 3/8] asm-generic: add nommu implementations of __{get,put}_kernel_nofault Christoph Hellwig
2020-09-07  5:58   ` [PATCH 3/8] asm-generic: add nommu implementations of __{get, put}_kernel_nofault Christoph Hellwig
2020-09-07  5:58 ` [PATCH 4/8] asm-generic: make the set_fs implementation optional Christoph Hellwig
2020-09-07  5:58   ` Christoph Hellwig
2020-09-07  5:58 ` [PATCH 5/8] riscv: use memcpy based uaccess for nommu again Christoph Hellwig
2020-09-07  5:58   ` Christoph Hellwig
2020-09-09  4:59   ` Palmer Dabbelt
2020-09-09  4:59     ` Palmer Dabbelt
2020-09-07  5:58 ` [PATCH 6/8] riscv: refactor __get_user and __put_user Christoph Hellwig
2020-09-07  5:58   ` Christoph Hellwig
2020-09-09  4:59   ` Palmer Dabbelt
2020-09-09  4:59     ` Palmer Dabbelt
2020-09-07  5:58 ` [PATCH 7/8] riscv: implement __get_kernel_nofault and __put_user_nofault Christoph Hellwig
2020-09-07  5:58   ` Christoph Hellwig
2020-09-09  4:59   ` Palmer Dabbelt
2020-09-09  4:59     ` Palmer Dabbelt
2020-09-07  5:58 ` [PATCH 8/8] riscv: remove address space overrides using set_fs() Christoph Hellwig
2020-09-07  5:58   ` Christoph Hellwig
2020-09-09  4:59   ` Palmer Dabbelt [this message]
2020-09-09  4:59     ` Palmer Dabbelt
2020-09-09  4:59 ` remove set_fs for riscv v2 Palmer Dabbelt
2020-09-09  4:59   ` Palmer Dabbelt
2020-09-09  6:55   ` Christoph Hellwig
2020-09-09  6:55     ` Christoph Hellwig
2020-09-09 20:38     ` Palmer Dabbelt
2020-09-09 20:38       ` Palmer Dabbelt
2020-09-22  4:37     ` Christoph Hellwig
2020-09-22  4:37       ` Christoph Hellwig
2020-09-26 17:50       ` Palmer Dabbelt
2020-09-26 17:50         ` Palmer Dabbelt
2020-09-26 19:13         ` Arnd Bergmann
2020-09-26 19:13           ` Arnd Bergmann
2020-10-04 17:27           ` Palmer Dabbelt
2020-10-04 17:27             ` Palmer Dabbelt
2020-09-28 12:49         ` Christoph Hellwig
2020-09-28 12:49           ` Christoph Hellwig
2020-09-28 16:45           ` Palmer Dabbelt
2020-09-28 16:45             ` Palmer Dabbelt
2020-09-29 18:03             ` Christoph Hellwig
2020-09-29 18:03               ` Christoph Hellwig
2020-09-26  6:58 ` Christoph Hellwig
2020-09-26  6:58   ` Christoph Hellwig
  -- strict thread matches above, loose matches on Subject: below --
2020-09-04 16:52 remove set_fs for riscv Christoph Hellwig
2020-09-04 16:52 ` [PATCH 8/8] riscv: remove address space overrides using set_fs() Christoph Hellwig
2020-09-04 16:52   ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=mhng-ca158d54-5e36-4407-a4da-097c9ddc7dfc@palmerdabbelt-glaptop1 \
    --to=palmer@dabbelt.com \
    --cc=arnd@arndb.de \
    --cc=hch@lst.de \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=paul.walmsley@sifive.com \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.