Re: raw1394_request user/kernel space size differences
Brought to you by:
aeb,
bencollins
From: Ben C. <bco...@de...> - 2000-05-27 05:12:30
|
Ok, I've talked to Dave Miller about this problem to some extent since he is familiar with intermixed 32/64 environments. ia64, ppc64 and mips64 promise to offer the same problems, so it's obviously important to fix this up now. Either one of two things can be done to fix the problem with the pointers in the raw1394_request struct: 1) Convert to using ioctl's and have the archs that have 32/64 userspace do translations (just as sparc64 does now in arch/sparc64/kernel/ioctl32.c) 2) The ATM code uses this (from include/linux/atmapi.h): /* * Opaque type for kernel pointers. Note that _ is never accessed. We need * the struct in order hide the array, so that we can make simple assignments * instead of being forced to use memcpy. It also improves error reporting for * code that still assumes that we're passing unsigned longs. * * Convention: NULL pointers are passed as a field of all zeroes. */ typedef struct { unsigned char _[8]; } atm_kptr_t; ...to abstract the pointers. I'm not sure how it's used, but Dave pointed me in this direction (albeit, he prefered the ioctl method). Either method will most likely require changes in the API for /dev/raw1394, libraw1394 internals and some special code in the kernel for the 32/64 mixed archs. Let me know which is prefered and I can start working to code the needed changes if wanted. -- -----------=======-=-======-=========-----------=====------------=-=------ / Ben Collins -- ...on that fantastic voyage... -- Debian GNU/Linux \ ` bco...@de... -- bco...@op... -- bco...@li... ' `---=========------=======-------------=-=-----=-===-======-------=--=---' |