All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Shunsuke Mie <mie@igel.co.jp>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	linux-kernel@vger.kernel.org,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	virtualization@lists.linux-foundation.org,
	"Eugenio Pérez" <eperezma@redhat.com>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>
Subject: Re: [PATCH v2 2/2] tools/virtio: fix build caused by virtio_ring changes
Date: Mon, 10 Apr 2023 08:00:33 -0400	[thread overview]
Message-ID: <20230410080014-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20230410112845.337212-2-mie@igel.co.jp>

On Mon, Apr 10, 2023 at 08:28:45PM +0900, Shunsuke Mie wrote:
> Fix the build dependency for virtio_test. The virtio_ring that is used from
> the test requires container_of_const(). Change to use container_of.h kernel
> header directly and adapt related codes.
> 
> Signed-off-by: Shunsuke Mie <mie@igel.co.jp>

This is only for next right? That's where container_of_const
things are I think ...

> ---
>  tools/include/linux/types.h   |  1 -
>  tools/virtio/linux/compiler.h |  2 ++
>  tools/virtio/linux/kernel.h   |  5 +----
>  tools/virtio/linux/module.h   |  1 -
>  tools/virtio/linux/uaccess.h  | 11 ++---------
>  5 files changed, 5 insertions(+), 15 deletions(-)
> 
> diff --git a/tools/include/linux/types.h b/tools/include/linux/types.h
> index 051fdeaf2670..f1896b70a8e5 100644
> --- a/tools/include/linux/types.h
> +++ b/tools/include/linux/types.h
> @@ -49,7 +49,6 @@ typedef __s8  s8;
>  #endif
>  
>  #define __force
> -#define __user
>  #define __must_check
>  #define __cold
>  
> diff --git a/tools/virtio/linux/compiler.h b/tools/virtio/linux/compiler.h
> index 2c51bccb97bb..1f3a15b954b9 100644
> --- a/tools/virtio/linux/compiler.h
> +++ b/tools/virtio/linux/compiler.h
> @@ -2,6 +2,8 @@
>  #ifndef LINUX_COMPILER_H
>  #define LINUX_COMPILER_H
>  
> +#include "../../../include/linux/compiler_types.h"
> +
>  #define WRITE_ONCE(var, val) \
>  	(*((volatile typeof(val) *)(&(var))) = (val))
>  
> diff --git a/tools/virtio/linux/kernel.h b/tools/virtio/linux/kernel.h
> index 8b877167933d..6702008f7f5c 100644
> --- a/tools/virtio/linux/kernel.h
> +++ b/tools/virtio/linux/kernel.h
> @@ -10,6 +10,7 @@
>  #include <stdarg.h>
>  
>  #include <linux/compiler.h>
> +#include "../../../include/linux/container_of.h"
>  #include <linux/log2.h>
>  #include <linux/types.h>
>  #include <linux/overflow.h>
> @@ -107,10 +108,6 @@ static inline void free_page(unsigned long addr)
>  	free((void *)addr);
>  }
>  
> -#define container_of(ptr, type, member) ({			\
> -	const typeof( ((type *)0)->member ) *__mptr = (ptr);	\
> -	(type *)( (char *)__mptr - offsetof(type,member) );})
> -
>  # ifndef likely
>  #  define likely(x)	(__builtin_expect(!!(x), 1))
>  # endif
> diff --git a/tools/virtio/linux/module.h b/tools/virtio/linux/module.h
> index 9dfa96fea2b2..5cf39167d47a 100644
> --- a/tools/virtio/linux/module.h
> +++ b/tools/virtio/linux/module.h
> @@ -4,4 +4,3 @@
>  #define MODULE_LICENSE(__MODULE_LICENSE_value) \
>  	static __attribute__((unused)) const char *__MODULE_LICENSE_name = \
>  		__MODULE_LICENSE_value
> -
> diff --git a/tools/virtio/linux/uaccess.h b/tools/virtio/linux/uaccess.h
> index 991dfb263998..cde2c344b260 100644
> --- a/tools/virtio/linux/uaccess.h
> +++ b/tools/virtio/linux/uaccess.h
> @@ -6,15 +6,10 @@
>  
>  extern void *__user_addr_min, *__user_addr_max;
>  
> -static inline void __chk_user_ptr(const volatile void *p, size_t size)
> -{
> -	assert(p >= __user_addr_min && p + size <= __user_addr_max);
> -}
> -
>  #define put_user(x, ptr)					\
>  ({								\
>  	typeof(ptr) __pu_ptr = (ptr);				\
> -	__chk_user_ptr(__pu_ptr, sizeof(*__pu_ptr));		\
> +	__chk_user_ptr(__pu_ptr);		\
>  	WRITE_ONCE(*(__pu_ptr), x);				\
>  	0;							\
>  })
> @@ -22,7 +17,7 @@ static inline void __chk_user_ptr(const volatile void *p, size_t size)
>  #define get_user(x, ptr)					\
>  ({								\
>  	typeof(ptr) __pu_ptr = (ptr);				\
> -	__chk_user_ptr(__pu_ptr, sizeof(*__pu_ptr));		\
> +	__chk_user_ptr(__pu_ptr);		\
>  	x = READ_ONCE(*(__pu_ptr));				\
>  	0;							\
>  })
> @@ -37,7 +32,6 @@ static void volatile_memcpy(volatile char *to, const volatile char *from,
>  static inline int copy_from_user(void *to, const void __user volatile *from,
>  				 unsigned long n)
>  {
> -	__chk_user_ptr(from, n);
>  	volatile_memcpy(to, from, n);
>  	return 0;
>  }
> @@ -45,7 +39,6 @@ static inline int copy_from_user(void *to, const void __user volatile *from,
>  static inline int copy_to_user(void __user volatile *to, const void *from,
>  			       unsigned long n)
>  {
> -	__chk_user_ptr(to, n);
>  	volatile_memcpy(to, from, n);
>  	return 0;
>  }
> -- 
> 2.25.1

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Shunsuke Mie <mie@igel.co.jp>
Cc: "Jason Wang" <jasowang@redhat.com>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	"Stefano Garzarella" <sgarzare@redhat.com>,
	"Eugenio Pérez" <eperezma@redhat.com>,
	linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org
Subject: Re: [PATCH v2 2/2] tools/virtio: fix build caused by virtio_ring changes
Date: Mon, 10 Apr 2023 08:00:33 -0400	[thread overview]
Message-ID: <20230410080014-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20230410112845.337212-2-mie@igel.co.jp>

On Mon, Apr 10, 2023 at 08:28:45PM +0900, Shunsuke Mie wrote:
> Fix the build dependency for virtio_test. The virtio_ring that is used from
> the test requires container_of_const(). Change to use container_of.h kernel
> header directly and adapt related codes.
> 
> Signed-off-by: Shunsuke Mie <mie@igel.co.jp>

This is only for next right? That's where container_of_const
things are I think ...

> ---
>  tools/include/linux/types.h   |  1 -
>  tools/virtio/linux/compiler.h |  2 ++
>  tools/virtio/linux/kernel.h   |  5 +----
>  tools/virtio/linux/module.h   |  1 -
>  tools/virtio/linux/uaccess.h  | 11 ++---------
>  5 files changed, 5 insertions(+), 15 deletions(-)
> 
> diff --git a/tools/include/linux/types.h b/tools/include/linux/types.h
> index 051fdeaf2670..f1896b70a8e5 100644
> --- a/tools/include/linux/types.h
> +++ b/tools/include/linux/types.h
> @@ -49,7 +49,6 @@ typedef __s8  s8;
>  #endif
>  
>  #define __force
> -#define __user
>  #define __must_check
>  #define __cold
>  
> diff --git a/tools/virtio/linux/compiler.h b/tools/virtio/linux/compiler.h
> index 2c51bccb97bb..1f3a15b954b9 100644
> --- a/tools/virtio/linux/compiler.h
> +++ b/tools/virtio/linux/compiler.h
> @@ -2,6 +2,8 @@
>  #ifndef LINUX_COMPILER_H
>  #define LINUX_COMPILER_H
>  
> +#include "../../../include/linux/compiler_types.h"
> +
>  #define WRITE_ONCE(var, val) \
>  	(*((volatile typeof(val) *)(&(var))) = (val))
>  
> diff --git a/tools/virtio/linux/kernel.h b/tools/virtio/linux/kernel.h
> index 8b877167933d..6702008f7f5c 100644
> --- a/tools/virtio/linux/kernel.h
> +++ b/tools/virtio/linux/kernel.h
> @@ -10,6 +10,7 @@
>  #include <stdarg.h>
>  
>  #include <linux/compiler.h>
> +#include "../../../include/linux/container_of.h"
>  #include <linux/log2.h>
>  #include <linux/types.h>
>  #include <linux/overflow.h>
> @@ -107,10 +108,6 @@ static inline void free_page(unsigned long addr)
>  	free((void *)addr);
>  }
>  
> -#define container_of(ptr, type, member) ({			\
> -	const typeof( ((type *)0)->member ) *__mptr = (ptr);	\
> -	(type *)( (char *)__mptr - offsetof(type,member) );})
> -
>  # ifndef likely
>  #  define likely(x)	(__builtin_expect(!!(x), 1))
>  # endif
> diff --git a/tools/virtio/linux/module.h b/tools/virtio/linux/module.h
> index 9dfa96fea2b2..5cf39167d47a 100644
> --- a/tools/virtio/linux/module.h
> +++ b/tools/virtio/linux/module.h
> @@ -4,4 +4,3 @@
>  #define MODULE_LICENSE(__MODULE_LICENSE_value) \
>  	static __attribute__((unused)) const char *__MODULE_LICENSE_name = \
>  		__MODULE_LICENSE_value
> -
> diff --git a/tools/virtio/linux/uaccess.h b/tools/virtio/linux/uaccess.h
> index 991dfb263998..cde2c344b260 100644
> --- a/tools/virtio/linux/uaccess.h
> +++ b/tools/virtio/linux/uaccess.h
> @@ -6,15 +6,10 @@
>  
>  extern void *__user_addr_min, *__user_addr_max;
>  
> -static inline void __chk_user_ptr(const volatile void *p, size_t size)
> -{
> -	assert(p >= __user_addr_min && p + size <= __user_addr_max);
> -}
> -
>  #define put_user(x, ptr)					\
>  ({								\
>  	typeof(ptr) __pu_ptr = (ptr);				\
> -	__chk_user_ptr(__pu_ptr, sizeof(*__pu_ptr));		\
> +	__chk_user_ptr(__pu_ptr);		\
>  	WRITE_ONCE(*(__pu_ptr), x);				\
>  	0;							\
>  })
> @@ -22,7 +17,7 @@ static inline void __chk_user_ptr(const volatile void *p, size_t size)
>  #define get_user(x, ptr)					\
>  ({								\
>  	typeof(ptr) __pu_ptr = (ptr);				\
> -	__chk_user_ptr(__pu_ptr, sizeof(*__pu_ptr));		\
> +	__chk_user_ptr(__pu_ptr);		\
>  	x = READ_ONCE(*(__pu_ptr));				\
>  	0;							\
>  })
> @@ -37,7 +32,6 @@ static void volatile_memcpy(volatile char *to, const volatile char *from,
>  static inline int copy_from_user(void *to, const void __user volatile *from,
>  				 unsigned long n)
>  {
> -	__chk_user_ptr(from, n);
>  	volatile_memcpy(to, from, n);
>  	return 0;
>  }
> @@ -45,7 +39,6 @@ static inline int copy_from_user(void *to, const void __user volatile *from,
>  static inline int copy_to_user(void __user volatile *to, const void *from,
>  			       unsigned long n)
>  {
> -	__chk_user_ptr(to, n);
>  	volatile_memcpy(to, from, n);
>  	return 0;
>  }
> -- 
> 2.25.1


  reply	other threads:[~2023-04-10 12:00 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-10 11:28 [PATCH v2 1/2] virtio_ring: add a struce device forward declaration Shunsuke Mie
2023-04-10 11:28 ` Shunsuke Mie
2023-04-10 11:28 ` [PATCH v2 2/2] tools/virtio: fix build caused by virtio_ring changes Shunsuke Mie
2023-04-10 11:28   ` Shunsuke Mie
2023-04-10 12:00   ` Michael S. Tsirkin [this message]
2023-04-10 12:00     ` Michael S. Tsirkin
2023-04-10 18:40     ` Greg Kroah-Hartman
2023-04-10 18:40       ` Greg Kroah-Hartman
2023-04-10 19:44       ` Michael S. Tsirkin
2023-04-10 19:44         ` Michael S. Tsirkin
2023-04-11  3:25         ` Shunsuke Mie
2023-04-11  3:25           ` Shunsuke Mie
2023-04-11  6:37           ` Michael S. Tsirkin
2023-04-11  6:37             ` Michael S. Tsirkin
2023-04-11  3:17       ` Shunsuke Mie
2023-04-11  3:17         ` Shunsuke Mie
2023-04-10 11:49 ` [PATCH v2 1/2] virtio_ring: add a struce device forward declaration Michael S. Tsirkin
2023-04-10 11:49   ` Michael S. Tsirkin

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=20230410080014-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=eperezma@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mie@igel.co.jp \
    --cc=rafael@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=willy@infradead.org \
    /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.