Patch "wifi: mt76: fix clang-specific fortify warnings" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    wifi: mt76: fix clang-specific fortify warnings

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     wifi-mt76-fix-clang-specific-fortify-warnings.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit c30983c5a2b680e4a38829a0902488b437e46623
Author: Dmitry Antipov <dmantipov@xxxxxxxxx>
Date:   Tue Aug 29 12:43:49 2023 +0300

    wifi: mt76: fix clang-specific fortify warnings
    
    [ Upstream commit 03f0e11da7fb26db4f27e6b83a223512db9f7ca5 ]
    
    When compiling with clang 16.0.6 and CONFIG_FORTIFY_SOURCE=y, I've
    noticed the following (somewhat confusing due to absence of an actual
    source code location):
    
    In file included from drivers/net/wireless/mediatek/mt76/mt792x_core.c:4:
    In file included from ./include/linux/module.h:13:
    In file included from ./include/linux/stat.h:19:
    In file included from ./include/linux/time.h:60:
    In file included from ./include/linux/time32.h:13:
    In file included from ./include/linux/timex.h:67:
    In file included from ./arch/x86/include/asm/timex.h:5:
    In file included from ./arch/x86/include/asm/processor.h:23:
    In file included from ./arch/x86/include/asm/msr.h:11:
    In file included from ./arch/x86/include/asm/cpumask.h:5:
    In file included from ./include/linux/cpumask.h:12:
    In file included from ./include/linux/bitmap.h:11:
    In file included from ./include/linux/string.h:254:
    ./include/linux/fortify-string.h:592:4: warning: call to '__read_overflow2_field'
    declared with 'warning' attribute: detected read beyond size of field (2nd
    parameter); maybe use struct_group()? [-Wattribute-warning]
                            __read_overflow2_field(q_size_field, size);
    
    In file included from drivers/net/wireless/mediatek/mt76/mt7915/main.c:4:
    In file included from ./include/linux/etherdevice.h:20:
    In file included from ./include/linux/if_ether.h:19:
    In file included from ./include/linux/skbuff.h:15:
    In file included from ./include/linux/time.h:60:
    In file included from ./include/linux/time32.h:13:
    In file included from ./include/linux/timex.h:67:
    In file included from ./arch/x86/include/asm/timex.h:5:
    In file included from ./arch/x86/include/asm/processor.h:23:
    In file included from ./arch/x86/include/asm/msr.h:11:
    In file included from ./arch/x86/include/asm/cpumask.h:5:
    In file included from ./include/linux/cpumask.h:12:
    In file included from ./include/linux/bitmap.h:11:
    In file included from ./include/linux/string.h:254:
    ./include/linux/fortify-string.h:592:4: warning: call to '__read_overflow2_field'
    declared with 'warning' attribute: detected read beyond size of field (2nd
    parameter); maybe use struct_group()? [-Wattribute-warning]
                            __read_overflow2_field(q_size_field, size);
    
    In file included from drivers/net/wireless/mediatek/mt76/mt7996/main.c:6:
    In file included from drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h:9:
    In file included from ./include/linux/interrupt.h:8:
    In file included from ./include/linux/cpumask.h:12:
    In file included from ./include/linux/bitmap.h:11:
    In file included from ./include/linux/string.h:254:
    ./include/linux/fortify-string.h:592:4: warning: call to '__read_overflow2_field'
    declared with 'warning' attribute: detected read beyond size of field (2nd
    parameter); maybe use struct_group()? [-Wattribute-warning]
                            __read_overflow2_field(q_size_field, size);
    
    The compiler actually complains on 'mt7915_get_et_strings()',
    'mt792x_get_et_strings()' and 'mt7996_get_et_strings()' due to the same
    reason: fortification logic inteprets call to 'memcpy()' as an attempt
    to copy the whole array from its first member and so issues an overread
    warning. These warnings may be silenced by passing an address of the whole
    array and not the first member to 'memcpy()'.
    
    Signed-off-by: Dmitry Antipov <dmantipov@xxxxxxxxx>
    Signed-off-by: Felix Fietkau <nbd@xxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/main.c b/drivers/net/wireless/mediatek/mt76/mt7915/main.c
index d06c25dda325e..d85105a43d704 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7915/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7915/main.c
@@ -1388,7 +1388,7 @@ void mt7915_get_et_strings(struct ieee80211_hw *hw,
 	if (sset != ETH_SS_STATS)
 		return;
 
-	memcpy(data, *mt7915_gstrings_stats, sizeof(mt7915_gstrings_stats));
+	memcpy(data, mt7915_gstrings_stats, sizeof(mt7915_gstrings_stats));
 	data += sizeof(mt7915_gstrings_stats);
 	page_pool_ethtool_stats_get_strings(data);
 }
diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_core.c b/drivers/net/wireless/mediatek/mt76/mt792x_core.c
index ec98450a938ff..f111c47fdca56 100644
--- a/drivers/net/wireless/mediatek/mt76/mt792x_core.c
+++ b/drivers/net/wireless/mediatek/mt76/mt792x_core.c
@@ -358,7 +358,7 @@ void mt792x_get_et_strings(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 	if (sset != ETH_SS_STATS)
 		return;
 
-	memcpy(data, *mt792x_gstrings_stats, sizeof(mt792x_gstrings_stats));
+	memcpy(data, mt792x_gstrings_stats, sizeof(mt792x_gstrings_stats));
 
 	data += sizeof(mt792x_gstrings_stats);
 	page_pool_ethtool_stats_get_strings(data);
diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/main.c b/drivers/net/wireless/mediatek/mt76/mt7996/main.c
index 6e0f0c100db84..620880e560e00 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7996/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7996/main.c
@@ -1198,7 +1198,7 @@ void mt7996_get_et_strings(struct ieee80211_hw *hw,
 			   u32 sset, u8 *data)
 {
 	if (sset == ETH_SS_STATS)
-		memcpy(data, *mt7996_gstrings_stats,
+		memcpy(data, mt7996_gstrings_stats,
 		       sizeof(mt7996_gstrings_stats));
 }
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux