On Thu, Jun 30, 2011 at 12:15:56PM +0200, Takashi Iwai wrote:
At Thu, 30 Jun 2011 10:17:54 +0100, Ralf Baechle wrote:
Found on a MIPS build but certain other architectures will have the same issue:
CC sound/isa/sb/sb16_csp.o sound/isa/sb/sb16_csp.c: In function ‘snd_sb_csp_ioctl’: sound/isa/sb/sb16_csp.c:228: error: case label does not reduce to an integer constant make[1]: *** [sound/isa/sb/sb16_csp.o] Error 1 make: *** [sound/isa/sb/sb16_csp.o] Error 2
This error message is caused by the _IOC_TYPECHECK() error check triggering due to excessive ioctl size on Alpha, PowerPC, MIPS and SPARC which define _IOC_SIZEBITS as 13. On all other architectures define it as 14 so struct snd_sb_csp_microcode with it's little over 12kB will just about fit into the 16kB limit.
What about the patch below?
I have no idea how big the soundblaster microcode being loaded actually is, that is if the reduced size of 0x1f00 will be sufficient. Aside of that I don't see a problem - I don't see how the old ioctl can possibly have been used before so there isn't a compatibility problem.
Or you could entirely sidestep the problem and use request_firmware() but I guess that's more effort than you want to invest.
This is an old ISA driver, so the impact must be very low.
True. I notice that sort of stuff in automated mass builds - not necessarily the sort of kernels one would actually use. Still build errors are annoying :)
Ralf