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