@@ -555,7 +555,7 @@ int snd_usb_create_quirk(struct snd_usb_audio *chip,
555
555
static int snd_usb_extigy_boot_quirk (struct usb_device * dev , struct usb_interface * intf )
556
556
{
557
557
struct usb_host_config * config = dev -> actconfig ;
558
- struct usb_device_descriptor new_device_descriptor ;
558
+ struct usb_device_descriptor * new_device_descriptor __free ( kfree ) = NULL ;
559
559
int err ;
560
560
561
561
if (le16_to_cpu (get_cfg_desc (config )-> wTotalLength ) == EXTIGY_FIRMWARE_SIZE_OLD ||
@@ -566,15 +566,19 @@ static int snd_usb_extigy_boot_quirk(struct usb_device *dev, struct usb_interfac
566
566
0x10 , 0x43 , 0x0001 , 0x000a , NULL , 0 );
567
567
if (err < 0 )
568
568
dev_dbg (& dev -> dev , "error sending boot message: %d\n" , err );
569
+
570
+ new_device_descriptor = kmalloc (sizeof (* new_device_descriptor ), GFP_KERNEL );
571
+ if (!new_device_descriptor )
572
+ return - ENOMEM ;
569
573
err = usb_get_descriptor (dev , USB_DT_DEVICE , 0 ,
570
- & new_device_descriptor , sizeof (new_device_descriptor ));
574
+ new_device_descriptor , sizeof (* new_device_descriptor ));
571
575
if (err < 0 )
572
576
dev_dbg (& dev -> dev , "error usb_get_descriptor: %d\n" , err );
573
- if (new_device_descriptor . bNumConfigurations > dev -> descriptor .bNumConfigurations )
577
+ if (new_device_descriptor -> bNumConfigurations > dev -> descriptor .bNumConfigurations )
574
578
dev_dbg (& dev -> dev , "error too large bNumConfigurations: %d\n" ,
575
- new_device_descriptor . bNumConfigurations );
579
+ new_device_descriptor -> bNumConfigurations );
576
580
else
577
- memcpy (& dev -> descriptor , & new_device_descriptor , sizeof (dev -> descriptor ));
581
+ memcpy (& dev -> descriptor , new_device_descriptor , sizeof (dev -> descriptor ));
578
582
err = usb_reset_configuration (dev );
579
583
if (err < 0 )
580
584
dev_dbg (& dev -> dev , "error usb_reset_configuration: %d\n" , err );
@@ -906,7 +910,7 @@ static void mbox2_setup_48_24_magic(struct usb_device *dev)
906
910
static int snd_usb_mbox2_boot_quirk (struct usb_device * dev )
907
911
{
908
912
struct usb_host_config * config = dev -> actconfig ;
909
- struct usb_device_descriptor new_device_descriptor ;
913
+ struct usb_device_descriptor * new_device_descriptor __free ( kfree ) = NULL ;
910
914
int err ;
911
915
u8 bootresponse [0x12 ];
912
916
int fwsize ;
@@ -941,15 +945,19 @@ static int snd_usb_mbox2_boot_quirk(struct usb_device *dev)
941
945
942
946
dev_dbg (& dev -> dev , "device initialised!\n" );
943
947
948
+ new_device_descriptor = kmalloc (sizeof (* new_device_descriptor ), GFP_KERNEL );
949
+ if (!new_device_descriptor )
950
+ return - ENOMEM ;
951
+
944
952
err = usb_get_descriptor (dev , USB_DT_DEVICE , 0 ,
945
- & new_device_descriptor , sizeof (new_device_descriptor ));
953
+ new_device_descriptor , sizeof (* new_device_descriptor ));
946
954
if (err < 0 )
947
955
dev_dbg (& dev -> dev , "error usb_get_descriptor: %d\n" , err );
948
- if (new_device_descriptor . bNumConfigurations > dev -> descriptor .bNumConfigurations )
956
+ if (new_device_descriptor -> bNumConfigurations > dev -> descriptor .bNumConfigurations )
949
957
dev_dbg (& dev -> dev , "error too large bNumConfigurations: %d\n" ,
950
- new_device_descriptor . bNumConfigurations );
958
+ new_device_descriptor -> bNumConfigurations );
951
959
else
952
- memcpy (& dev -> descriptor , & new_device_descriptor , sizeof (dev -> descriptor ));
960
+ memcpy (& dev -> descriptor , new_device_descriptor , sizeof (dev -> descriptor ));
953
961
954
962
err = usb_reset_configuration (dev );
955
963
if (err < 0 )
@@ -1259,7 +1267,7 @@ static void mbox3_setup_defaults(struct usb_device *dev)
1259
1267
static int snd_usb_mbox3_boot_quirk (struct usb_device * dev )
1260
1268
{
1261
1269
struct usb_host_config * config = dev -> actconfig ;
1262
- struct usb_device_descriptor new_device_descriptor ;
1270
+ struct usb_device_descriptor * new_device_descriptor __free ( kfree ) = NULL ;
1263
1271
int err ;
1264
1272
int descriptor_size ;
1265
1273
@@ -1272,15 +1280,19 @@ static int snd_usb_mbox3_boot_quirk(struct usb_device *dev)
1272
1280
1273
1281
dev_dbg (& dev -> dev , "MBOX3: device initialised!\n" );
1274
1282
1283
+ new_device_descriptor = kmalloc (sizeof (* new_device_descriptor ), GFP_KERNEL );
1284
+ if (!new_device_descriptor )
1285
+ return - ENOMEM ;
1286
+
1275
1287
err = usb_get_descriptor (dev , USB_DT_DEVICE , 0 ,
1276
- & new_device_descriptor , sizeof (new_device_descriptor ));
1288
+ new_device_descriptor , sizeof (* new_device_descriptor ));
1277
1289
if (err < 0 )
1278
1290
dev_dbg (& dev -> dev , "MBOX3: error usb_get_descriptor: %d\n" , err );
1279
- if (new_device_descriptor . bNumConfigurations > dev -> descriptor .bNumConfigurations )
1291
+ if (new_device_descriptor -> bNumConfigurations > dev -> descriptor .bNumConfigurations )
1280
1292
dev_dbg (& dev -> dev , "MBOX3: error too large bNumConfigurations: %d\n" ,
1281
- new_device_descriptor . bNumConfigurations );
1293
+ new_device_descriptor -> bNumConfigurations );
1282
1294
else
1283
- memcpy (& dev -> descriptor , & new_device_descriptor , sizeof (dev -> descriptor ));
1295
+ memcpy (& dev -> descriptor , new_device_descriptor , sizeof (dev -> descriptor ));
1284
1296
1285
1297
err = usb_reset_configuration (dev );
1286
1298
if (err < 0 )
0 commit comments