Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1734869 > unrolled thread

linux-4.14-rc1/arch/x86/include/asm/uaccess.h: Missing include of <linux/sched.h>

Started byStefan Mätje <Stefan.Maetje@esd.eu>
First post2017-09-19 14:30 +0200
Last post2017-09-19 16:00 +0200
Articles 3 — 2 participants

Back to article view | Back to linux.kernel


Contents

  linux-4.14-rc1/arch/x86/include/asm/uaccess.h: Missing include of  <linux/sched.h> Stefan Mätje <Stefan.Maetje@esd.eu> - 2017-09-19 14:30 +0200
    Re: linux-4.14-rc1/arch/x86/include/asm/uaccess.h: Missing include  of <linux/sched.h> Seraphime Kirkovski <kirkseraph@gmail.com> - 2017-09-19 15:20 +0200
      Re: linux-4.14-rc1/arch/x86/include/asm/uaccess.h: Missing include of  <linux/sched.h> Stefan Mätje <Stefan.Maetje@esd.eu> - 2017-09-19 16:00 +0200

#1734869 — linux-4.14-rc1/arch/x86/include/asm/uaccess.h: Missing include of <linux/sched.h>

FromStefan Mätje <Stefan.Maetje@esd.eu>
Date2017-09-19 14:30 +0200
Subjectlinux-4.14-rc1/arch/x86/include/asm/uaccess.h: Missing include of <linux/sched.h>
Message-ID<urpP6-5pF-31@gated-at.bofh.it>
Resend with changed subject:

Hi,

there is a change in Linus' mainline kernel for 4.14-rc1
(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/x86/include/asm/uaccess.h?id=6c51e67b64d169419fb13318035bb442f9176612)
that changes the set_fs() macro into an inline function.

This breaks the build of an out of kernel driver I maintain with this
message:

./arch/x86/include/asm/uaccess.h: In function ‘set_fs’:
./arch/x86/include/asm/uaccess.h:31:9: error: dereferencing pointer to
incomplete type

set_fs() is referencing the "current" pointer which is of type "struct
task_struct" declared in include/linux/sched.h.

Before the change set_fs() was a macro. Because I don't use it it was of
no concern for me. But now the compiler needs to compile the inline
function set_fs() and fails.

Should I add the needed <linux/sched.h> myself in my code or will that
be changed / fixed in the <asm/uaccess.h> header by including the
missing header.

Thanks for any advice.

Best regards,
	Stefan Mätje

[toc] | [next] | [standalone]


#1734900 — Re: linux-4.14-rc1/arch/x86/include/asm/uaccess.h: Missing include of <linux/sched.h>

FromSeraphime Kirkovski <kirkseraph@gmail.com>
Date2017-09-19 15:20 +0200
SubjectRe: linux-4.14-rc1/arch/x86/include/asm/uaccess.h: Missing include of <linux/sched.h>
Message-ID<urqBs-5WC-13@gated-at.bofh.it>
In reply to#1734869
Hi,

> ./arch/x86/include/asm/uaccess.h: In function ‘set_fs’:
> ./arch/x86/include/asm/uaccess.h:31:9: error: dereferencing pointer to
> incomplete type

I can reproduce your problem by including <asm/uaccess.h>, but not with 
<linux/uaccess.h>.

	#include <asm/uaccess.h>
	//#include <linux/uaccess.h> does compile
	#include <linux/module.h>


	int __init init(void)
	{
		set_fs(get_fs());
		return 0;
	}

	void __exit finit(void)
	{
	}

	module_init(init);
	module_exit(finit);

If my memory is any good, direct inclusion of <asm/uaccess.h> was 
deprecated in 4.12 and new code should use <linux/uaccess.h>

Thanks,
Seraphime Kirkovski

[toc] | [prev] | [next] | [standalone]


#1734933

FromStefan Mätje <Stefan.Maetje@esd.eu>
Date2017-09-19 16:00 +0200
Message-ID<urrea-69k-19@gated-at.bofh.it>
In reply to#1734900
Hi,

changing the include line to <linux/uaccess.h> solves the problem for me.

Thank you for taking the time to look into this.

Best regards,
	Stefan Mätje

Am 19.09.2017 um 15:12 schrieb Seraphime Kirkovski:
> Hi,
> 
>> ./arch/x86/include/asm/uaccess.h: In function ‘set_fs’:
>> ./arch/x86/include/asm/uaccess.h:31:9: error: dereferencing pointer to
>> incomplete type
> 
> I can reproduce your problem by including <asm/uaccess.h>, but not with 
> <linux/uaccess.h>.
> 
> 	#include <asm/uaccess.h>
> 	//#include <linux/uaccess.h> does compile
> 	#include <linux/module.h>

My code doesn't use set_fs() but it is only in the header.

> If my memory is any good, direct inclusion of <asm/uaccess.h> was 
> deprecated in 4.12 and new code should use <linux/uaccess.h>

I did miss this deprecation.

> Thanks,
> Seraphime Kirkovski
> 

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web