Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ASoC: codecs: rt1320-sdw: Refactor to reduce stack frames

Compiler is not happy about used stack frames in a couple of functions:

sound/soc/codecs/rt1320-sdw.c: In function 'rt1320_rae_load':
sound/soc/codecs/rt1320-sdw.c:1570:1: error: the frame size of 1336 bytes is larger than 1280 bytes [-Werror=frame-larger-than=]
sound/soc/codecs/rt1320-sdw.c: In function 'rt1320_dspfw_load_code':
sound/soc/codecs/rt1320-sdw.c:1786:1: error: the frame size of 1520 bytes is larger than 1280 bytes [-Werror=frame-larger-than=]

Refactor the code to fix these.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://patch.msgid.link/20260124101824.3424793-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Andy Shevchenko and committed by
Mark Brown
233ccfe9 3febba21

+13 -30
+13 -30
sound/soc/codecs/rt1320-sdw.c
··· 1429 1429 unsigned int addr, size; 1430 1430 unsigned int func, value; 1431 1431 const char *dmi_vendor, *dmi_product, *dmi_sku; 1432 - char vendor[128], product[128], sku[128]; 1433 - char *ptr_vendor, *ptr_product, *ptr_sku; 1432 + int len_vendor, len_product, len_sku; 1434 1433 char rae_filename[512]; 1435 1434 char tag[5]; 1436 1435 int ret = 0; ··· 1440 1441 dmi_sku = dmi_get_system_info(DMI_PRODUCT_SKU); 1441 1442 1442 1443 if (dmi_vendor && dmi_product && dmi_sku) { 1443 - strscpy(vendor, dmi_vendor); 1444 - strscpy(product, dmi_product); 1445 - strscpy(sku, dmi_sku); 1446 - ptr_vendor = &vendor[0]; 1447 - ptr_product = &product[0]; 1448 - ptr_sku = &sku[0]; 1449 - ptr_vendor = strsep(&ptr_vendor, " "); 1450 - ptr_product = strsep(&ptr_product, " "); 1451 - ptr_sku = strsep(&ptr_sku, " "); 1452 - 1453 - dev_dbg(dev, "%s: DMI vendor=%s, product=%s, sku=%s\n", __func__, 1454 - vendor, product, sku); 1444 + len_vendor = strchrnul(dmi_vendor, ' ') - dmi_vendor; 1445 + len_product = strchrnul(dmi_product, ' ') - dmi_product; 1446 + len_sku = strchrnul(dmi_sku, ' ') - dmi_sku; 1455 1447 1456 1448 snprintf(rae_filename, sizeof(rae_filename), 1457 - "realtek/rt1320/rt1320_RAE_%s_%s_%s.dat", vendor, product, sku); 1449 + "realtek/rt1320/rt1320_RAE_%.*s_%.*s_%.*s.dat", 1450 + len_vendor, dmi_vendor, len_product, dmi_product, len_sku, dmi_sku); 1458 1451 dev_dbg(dev, "%s: try to load RAE file %s\n", __func__, rae_filename); 1459 1452 } else { 1460 1453 dev_warn(dev, "%s: Can't find proper RAE file name\n", __func__); ··· 1586 1595 static const char hdr_sig[] = "AFX"; 1587 1596 unsigned int hdr_size = 0; 1588 1597 const char *dmi_vendor, *dmi_product, *dmi_sku; 1589 - char vendor[128], product[128], sku[128]; 1590 - char *ptr_vendor, *ptr_product, *ptr_sku; 1598 + int len_vendor, len_product, len_sku; 1591 1599 char filename[512]; 1592 1600 1593 1601 switch (rt1320->dev_id) { ··· 1606 1616 dmi_sku = dmi_get_system_info(DMI_PRODUCT_SKU); 1607 1617 1608 1618 if (dmi_vendor && dmi_product && dmi_sku) { 1609 - strscpy(vendor, dmi_vendor); 1610 - strscpy(product, dmi_product); 1611 - strscpy(sku, dmi_sku); 1612 - ptr_vendor = &vendor[0]; 1613 - ptr_product = &product[0]; 1614 - ptr_sku = &sku[0]; 1615 - ptr_vendor = strsep(&ptr_vendor, " "); 1616 - ptr_product = strsep(&ptr_product, " "); 1617 - ptr_sku = strsep(&ptr_sku, " "); 1618 - 1619 - dev_dbg(dev, "%s: DMI vendor=%s, product=%s, sku=%s\n", __func__, 1620 - vendor, product, sku); 1619 + len_vendor = strchrnul(dmi_vendor, ' ') - dmi_vendor; 1620 + len_product = strchrnul(dmi_product, ' ') - dmi_product; 1621 + len_sku = strchrnul(dmi_sku, ' ') - dmi_sku; 1621 1622 1622 1623 snprintf(filename, sizeof(filename), 1623 - "realtek/rt1320/rt1320_%s_%s_%s.dat", vendor, product, sku); 1624 + "realtek/rt1320/rt1320_%.*s_%.*s_%.*s.dat", 1625 + len_vendor, dmi_vendor, len_product, dmi_product, len_sku, dmi_sku); 1626 + 1624 1627 dev_dbg(dev, "%s: try to load FW file %s\n", __func__, filename); 1625 1628 } else if (rt1320->dspfw_name) { 1626 1629 snprintf(filename, sizeof(filename), "rt1320_%s.dat",