Skip to contentSkip to conversation

ioctl compile warnings in userspace

PATCH In review Johannes Stezenbach 2 participants 2 messages Nov 8, 2003 – Nov 9, 2003

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ioctl compile warnings in userspace

Hi,

Debian unstable now has glibc 2.3.2 and includes kernel headers from "2.5.999-test7-bk-8".

$ gcc --version
gcc (GCC) 3.3.2 (Debian)

When compiling my DVB test programs I get warnings like:

test_stc.c:64: warning: signed and unsigned type in conditional expression

with test_stc.c:64 being:

        if (ioctl(dmxfd, DMX_GET_STC, &stc) == -1) {

Patch below fixes it for i386, but there are more platforms which need fixing.

include/asm-i386/ioctl.h +1 -1
diff -ru linux-2.6.0-test9-bk8/include/asm-i386/ioctl.h linux-2.6.0-test9-bk8-fix/include/asm-i386/ioctl.h
@@ -53,7 +53,7 @@
 	 ((size) << _IOC_SIZESHIFT))
 
 /* provoke compile error for invalid uses of size argument */
-extern int __invalid_size_argument_for_IOC;
+extern unsigned int __invalid_size_argument_for_IOC;
 #define _IOC_TYPECHECK(t) \
 	((sizeof(t) == sizeof(t[1]) && \
 	  sizeof(t) < (1 << _IOC_SIZEBITS)) ? \

Johannes

#1 lore raw
Quoted 7 lines · Johannes Stezenbach

Hi,

Debian unstable now has glibc 2.3.2 and includes kernel headers from "2.5.999-test7-bk-8".

$ gcc --version
gcc (GCC) 3.3.2 (Debian)

I also get this problem when compiling parted :

../../libparted/linux.c: In function `_device_get_length':
../../libparted/linux.c:407: error: parse error before '[' token ../../libparted/linux.c:407: warning: signed and unsigned type in conditional expression make[4]: *** [linux.lo] Erreur 1

This error is due to the usage of BLKGETSIZE64 in linux/fs.h, which is defined as :

  #define BLKGETSIZE64 _IOR(0x12,114,size_t)      /* return device size in bytes (u64 *arg) */

I understand that size_t should no more be used or something such, which is way the _IOC_TYPECHECK(t) was introduced.

I believe that the error is due to :

sizeof(t[1])

trying to do :

sizeof(size_t[1])

Not sure though.

I guess the debian glibc should not use 2.6.0-test headers in its unstable glibc, which will run on systems with 2.4.x kernels anyway.

Friendly,

Sven Luther