All of lore.kernel.org
 help / color / mirror / Atom feed
* UML/man: BLKGETSIZE takes a long, not an int
@ 2007-08-13 12:42 Nicolas George
  2007-08-15 17:12 ` Jeff Dike
  0 siblings, 1 reply; 7+ messages in thread
From: Nicolas George @ 2007-08-13 12:42 UTC (permalink / raw)
  To: linux-kernel, uml-devel


[-- Attachment #1.1: Type: text/plain, Size: 559 bytes --]

Hi.

I found a type mismatch in UML that makes host block devices unusable as ubd
devices on x86_64 and other 64 bits systems (segfault of the mm subsystem):

In block/ioctl.c, the following lines show that the BLKGETSIZE ioctl expects
a pointer to a long:

	case BLKGETSIZE:
		if ((bdev->bd_inode->i_size >> 9) > ~0UL)
			return -EFBIG;
		return put_ulong(arg, bdev->bd_inode->i_size >> 9);

In arch/um/os-Linux/file.c, os_file_size calls it with an int.

The ioctl_list man page should be fixed as well.

Regards,

-- 
  Nicolas George

[-- Attachment #1.2: linux-umlblkgetsize-20070813.diff --]
[-- Type: text/x-diff, Size: 397 bytes --]

diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c
index 6f92f73..c3ecc2a 100644
--- a/arch/um/os-Linux/file.c
+++ b/arch/um/os-Linux/file.c
@@ -320,7 +320,8 @@ int os_file_size(char *file, unsigned long long *size_out)
 	}
 
 	if(S_ISBLK(buf.ust_mode)){
-		int fd, blocks;
+		int fd;
+		long blocks;
 
 		fd = os_open_file(file, of_read(OPENFLAGS()), 0);
 		if(fd < 0){

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply related	[flat|nested] 7+ messages in thread
* (no subject)
@ 2007-08-14  9:29 Nicolas George
  2007-08-27 13:25 ` UML/man: BLKGETSIZE takes a long, not an int Michael Kerrisk
  0 siblings, 1 reply; 7+ messages in thread
From: Nicolas George @ 2007-08-14  9:29 UTC (permalink / raw)
  To: linux-kernel, user-mode-linux-devel, jdike, mtk-manpages


[-- Attachment #1.1: Type: text/plain, Size: 966 bytes --]

Cc: 
Bcc: 
Subject: Re: UML/man: BLKGETSIZE takes a long, not an int
Reply-To: 
In-Reply-To: <20070813124247.GA7414@she-seel.salle-s.org>

Hi.

I fear that my bug-report yesterday was very badly written, with me writing
to the wrong mailing-list and all.

I was saying:

> I found a type mismatch in UML that makes host block devices unusable as ubd
> devices on x86_64 and other 64 bits systems (segfault of the mm subsystem):
> 
> In block/ioctl.c, the following lines show that the BLKGETSIZE ioctl expects
> a pointer to a long:
> 
> 	case BLKGETSIZE:
> 		if ((bdev->bd_inode->i_size >> 9) > ~0UL)
> 			return -EFBIG;
> 		return put_ulong(arg, bdev->bd_inode->i_size >> 9);
> 
> In arch/um/os-Linux/file.c, os_file_size calls it with an int.
> 
> The ioctl_list man page should be fixed as well.

I add that the bug was still there yesterday in the git repository.

I join the patch to file.c.

Regards,

-- 
  Nicolas George

[-- Attachment #1.2: linux-umlblkgetsize-20070813.diff --]
[-- Type: text/plain, Size: 397 bytes --]

diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c
index 6f92f73..c3ecc2a 100644
--- a/arch/um/os-Linux/file.c
+++ b/arch/um/os-Linux/file.c
@@ -320,7 +320,8 @@ int os_file_size(char *file, unsigned long long *size_out)
 	}
 
 	if(S_ISBLK(buf.ust_mode)){
-		int fd, blocks;
+		int fd;
+		long blocks;
 
 		fd = os_open_file(file, of_read(OPENFLAGS()), 0);
 		if(fd < 0){

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 185 bytes --]

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2007-08-27 13:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-13 12:42 UML/man: BLKGETSIZE takes a long, not an int Nicolas George
2007-08-15 17:12 ` Jeff Dike
2007-08-15 21:38   ` [uml-devel] [PATCH] UML: " Nicolas George
2007-08-15 21:38     ` Nicolas George
2007-08-16 14:48     ` [uml-devel] " Jeff Dike
2007-08-16 14:48       ` Jeff Dike
  -- strict thread matches above, loose matches on Subject: below --
2007-08-14  9:29 Nicolas George
2007-08-27 13:25 ` UML/man: BLKGETSIZE takes a long, not an int Michael Kerrisk

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.