Subject: Re: linux-next: "aio: make the lookup_ioctx() lockless" causes s390 build bug

From: Kamalesh Babulal <[email-masked]>
Date: Tue, 9 Dec 2008 16:51:05 +0530

* Jens Axboe <[email-masked]> [2008-12-05 23:06:35]:

> On Fri, Dec 05 2008, Heiko Carstens wrote:
> > Hi Jens,
> > 
> > your patch "aio: make the lookup_ioctx() lockless" in linux-next
> > causes this build bug on s390:
> > 
> > arch/s390/mm/pgtable.c: In function 's390_enable_sie':
> > arch/s390/mm/pgtable.c:266: error: invalid operands to binary || (have 'int' and 'struct hlist_head')
> > arch/s390/mm/pgtable.c:282: error: invalid operands to binary || (have 'int' and 'struct hlist_head')
> > make[1]: *** [arch/s390/mm/pgtable.o] Error 1
> > make: *** [arch/s390/mm] Error 2
> > 
> > Could you please fix that? Thanks! ;)
> 
> Something like this?

Hi Jens,

	Thank you for the patch, it fixes the build failure.

Tested-by: Kamalesh Babulal <[email-masked]>
> 
> diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
> index ef3635b..0767827 100644
> --- a/arch/s390/mm/pgtable.c
> +++ b/arch/s390/mm/pgtable.c
> @@ -263,7 +263,7 @@ int s390_enable_sie(void)
>  	/* lets check if we are allowed to replace the mm */
>  	task_lock(tsk);
>  	if (!tsk->mm || atomic_read(&tsk->mm->mm_users) > 1 ||
> -	    tsk->mm != tsk->active_mm || tsk->mm->ioctx_list) {
> +	    tsk->mm != tsk->active_mm || !hlist_empty(&tsk->mm->ioctx_list)) {
>  		task_unlock(tsk);
>  		return -EINVAL;
>  	}
> @@ -279,7 +279,7 @@ int s390_enable_sie(void)
>  	/* Now lets check again if something happened */
>  	task_lock(tsk);
>  	if (!tsk->mm || atomic_read(&tsk->mm->mm_users) > 1 ||
> -	    tsk->mm != tsk->active_mm || tsk->mm->ioctx_list) {
> +	    tsk->mm != tsk->active_mm || !hlist_empty(&tsk->mm->ioctx_list)) {
>  		mmput(mm);
>  		task_unlock(tsk);
>  		return -EINVAL;
> 
> -- 
> Jens Axboe
> 

-- 
Thanks & Regards,
Kamalesh Babulal,
Linux Technology Center,
IBM, ISTL.