On Tue, 21 Jul 2020 08:48:51 +0200, René Herman wrote:
snd-usb-fire currently fails its firmware load with "transfer buffer not dma capable". Move said buffer off of the stack.
Signed-off-by: René Herman rene.herman@gmail.com
firmware.c | 95 ++++++++++++++++++++++++++---------------------------- 1 file changed, 46 insertions(+), 49 deletions(-)
diff --git a/firmware.c b/firmware.c index 69137c1..502653a 100644 --- a/firmware.c +++ b/firmware.c @@ -355,63 +355,60 @@ static int usb6fire_fw_check(struct usb_interface *intf, const u8 *version)
int usb6fire_fw_init(struct usb_interface *intf) {
- int i;
- int ret; struct usb_device *device = interface_to_usbdev(intf);
- int ret, i;
- /* buffer: 8 receiving bytes from device and
- sizeof(EP_W_MAX_PACKET_SIZE) bytes for non-const copy */
- u8 buffer[12];
u8 *buffer = kmalloc(12, GFP_KERNEL);
if (!buffer)
return -ENOMEM;
ret = usb6fire_fw_ezusb_read(device, 1, 0, buffer, 8); if (ret < 0) { dev_err(&intf->dev, "unable to receive device firmware state.\n");
return ret;
- }
- if (buffer[0] != 0xeb || buffer[1] != 0xaa || buffer[2] != 0x55) {
dev_err(&intf->dev,
"unknown device firmware state received from device:");
for (i = 0; i < 8; i++)
printk(KERN_CONT "%02x ", buffer[i]);
printk(KERN_CONT "\n");
return -EIO;
- }
Could you rather change return with goto out (with ret variable set)? In that way we can see what actually you changed more clearly.
thanks,
Takashi