[lttng-dev] [PATCH lttng-modules 1/5] Fix: mm: create the new vm_fault_t type (v5.1)

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Mon Mar 18 16:39:14 EDT 2019


All merged into master, 2.11, 2.10, 2.9, thanks!

Mathieu

----- On Mar 18, 2019, at 4:20 PM, Michael Jeanson mjeanson at efficios.com wrote:

> See upstream commit:
> 
>  commit 3d3539018d2cbd12e5af4a132636ee7fd8d43ef0
>  Author: Souptick Joarder <jrdr.linux at gmail.com>
>  Date:   Thu Mar 7 16:31:14 2019 -0800
> 
>    mm: create the new vm_fault_t type
> 
>    Page fault handlers are supposed to return VM_FAULT codes, but some
>    drivers/file systems mistakenly return error numbers.  Now that all
>    drivers/file systems have been converted to use the vm_fault_t return
>    type, change the type definition to no longer be compatible with 'int'.
>    By making it an unsigned int, the function prototype becomes
>    incompatible with a function which returns int.  Sparse will detect any
>    attempts to return a value which is not a VM_FAULT code.
> 
>    VM_FAULT_SET_HINDEX and VM_FAULT_GET_HINDEX values are changed to avoid
>    conflict with other VM_FAULT codes.
> ---
> lib/ringbuffer/ring_buffer_mmap.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/ringbuffer/ring_buffer_mmap.c
> b/lib/ringbuffer/ring_buffer_mmap.c
> index 30dd93e..fab9458 100644
> --- a/lib/ringbuffer/ring_buffer_mmap.c
> +++ b/lib/ringbuffer/ring_buffer_mmap.c
> @@ -20,7 +20,11 @@
> /*
>  * fault() vm_op implementation for ring buffer file mapping.
>  */
> +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,1,0))
> +static vm_fault_t lib_ring_buffer_fault_compat(struct vm_area_struct *vma,
> struct vm_fault *vmf)
> +#else
> static int lib_ring_buffer_fault_compat(struct vm_area_struct *vma, struct
> vm_fault *vmf)
> +#endif
> {
> 	struct lib_ring_buffer *buf = vma->vm_private_data;
> 	struct channel *chan = buf->backend.chan;
> @@ -53,7 +57,13 @@ static int lib_ring_buffer_fault_compat(struct vm_area_struct
> *vma, struct vm_fa
> 	return 0;
> }
> 
> -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
> +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,1,0))
> +static vm_fault_t lib_ring_buffer_fault(struct vm_fault *vmf)
> +{
> +	struct vm_area_struct *vma = vmf->vma;
> +	return lib_ring_buffer_fault_compat(vma, vmf);
> +}
> +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
> static int lib_ring_buffer_fault(struct vm_fault *vmf)
> {
> 	struct vm_area_struct *vma = vmf->vma;
> --
> 2.17.1

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com


More information about the lttng-dev mailing list