Alan Stern [off-list ref] writes:
On Mon, 25 Jan 2016, Bjørn Mork wrote:
quoted
I don't feel much like an expert here, but I can certainly make up an
opinion anyway :)
Since 64bits kernels allow usb devio with interface numbers up to 63, I
guess you need __u64 to avoid limiting the range? Limiting will create
all sorts of followup problems, so it's definitely easiest to just go
with __u64.
But the Linux USB stack only allows up to 32 interfaces (see
include/linux/usb.h):
/* this maximum is arbitrary */
#define USB_MAXINTERFACES 32
Ah, I totally missed that. Thanks
So there's no point using a 64-bit value.
On the other hand, this value is supposed to be the same size as
ps->ifclaimed, which is used as an argument to clear_bit(), set_bit(),
and test_bit(). Those routines require unsigned long.
Maybe the input to these should be clamped to USB_MAXINTERFACES?
Bjørn