Wenn Sie das Problem lösen wollen müssten Sie schon unsere Ratschläge befolgen.
Die von Ihnen genannten Probleme treten im Normalfall nicht auf.
Sie können gerne die jeweiligen Funktionen im Kernel debuggen warum das System dem Treiber nicht den jeweiligen Speicher geben möchte, aber dann bitte nicht wundern wenn genau die Ursache rauskommt die wir vorher geschrieben haben.
[181226.828680] [<ffffffff810ba31e>] ? __alloc_pages_nodemask+0x592/0x5f4
[181226.828683] [<ffffffff810b92e4>] ? __get_free_pages+0x9/0x46
[181226.828688] [<ffffffff810e7bbd>] ? __kmalloc+0x3f/0x141
[181226.828704] [<ffffffffa0027c3d>] ? proc_do_submiturb+0x417/0x814 [usbcore]
[181226.828710] [<ffffffffa00292b5>] ? usbdev_ioctl+0xd75/0x13ba [usbcore]
steht ja dort das es nicht klappt, und woran es liegt. kmalloc -> Anfragen nach Speicher (und dies befindet sich im Source des Kernels), und das System gibt aber nichts zurück.
proc_do_submit_urb ist in devio.c im USB Stack des Kernels definiert, die maximale Größe welche der Funktion übergeben werden kann ist 196608 bytes bei neueren Systemen, bei älteren Systemen ein viertel davon.
Man sieht also das es nicht an unserem Treiber liegen kann wenn dafür nicht genug Speicher verfügbar ist.
Das ganze Kernelprojekt ist sehr umfangreich und alle Problemlösungen in eine "Stable" Version reinpatchen dazu fehlen bei Debian einfach die Resourcen (auch wenn dies das Ziel ist)