Skip to content

Commit 557bf82

Browse files
authored
Merge pull request hathach#1867 from silvergasp/thread_local_globals
fix: Change all static variables to thread when fuzzing
2 parents 3342635 + bcf5e5f commit 557bf82

File tree

19 files changed

+67
-57
lines changed

19 files changed

+67
-57
lines changed

src/class/cdc/cdc_device.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ typedef struct
7676
//--------------------------------------------------------------------+
7777
// INTERNAL OBJECT & FUNCTION DECLARATION
7878
//--------------------------------------------------------------------+
79-
CFG_TUSB_MEM_SECTION static cdcd_interface_t _cdcd_itf[CFG_TUD_CDC];
79+
CFG_TUSB_MEM_SECTION static _fuzz_thread cdcd_interface_t _cdcd_itf[CFG_TUD_CDC];
8080

8181
static bool _prep_out_transaction (cdcd_interface_t* p_cdc)
8282
{

src/class/dfu/dfu_device.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ typedef struct
5656
} dfu_state_ctx_t;
5757

5858
// Only a single dfu state is allowed
59-
CFG_TUSB_MEM_SECTION static dfu_state_ctx_t _dfu_ctx;
59+
CFG_TUSB_MEM_SECTION static _fuzz_thread dfu_state_ctx_t _dfu_ctx;
6060

6161
static void reset_state(void)
6262
{
@@ -74,7 +74,7 @@ static bool process_manifest_get_status(uint8_t rhport, uint8_t stage, tusb_cont
7474
//--------------------------------------------------------------------+
7575
#if CFG_TUSB_DEBUG >= 2
7676

77-
static tu_lookup_entry_t const _dfu_request_lookup[] =
77+
static _fuzz_thread tu_lookup_entry_t const _dfu_request_lookup[] =
7878
{
7979
{ .key = DFU_REQUEST_DETACH , .data = "DETACH" },
8080
{ .key = DFU_REQUEST_DNLOAD , .data = "DNLOAD" },
@@ -85,13 +85,13 @@ static tu_lookup_entry_t const _dfu_request_lookup[] =
8585
{ .key = DFU_REQUEST_ABORT , .data = "ABORT" },
8686
};
8787

88-
static tu_lookup_table_t const _dfu_request_table =
88+
static _fuzz_thread tu_lookup_table_t const _dfu_request_table =
8989
{
9090
.count = TU_ARRAY_SIZE(_dfu_request_lookup),
9191
.items = _dfu_request_lookup
9292
};
9393

94-
static tu_lookup_entry_t const _dfu_state_lookup[] =
94+
static _fuzz_thread tu_lookup_entry_t const _dfu_state_lookup[] =
9595
{
9696
{ .key = APP_IDLE , .data = "APP_IDLE" },
9797
{ .key = APP_DETACH , .data = "APP_DETACH" },
@@ -106,13 +106,13 @@ static tu_lookup_entry_t const _dfu_state_lookup[] =
106106
{ .key = DFU_ERROR , .data = "ERROR" },
107107
};
108108

109-
static tu_lookup_table_t const _dfu_state_table =
109+
static _fuzz_thread tu_lookup_table_t const _dfu_state_table =
110110
{
111111
.count = TU_ARRAY_SIZE(_dfu_state_lookup),
112112
.items = _dfu_state_lookup
113113
};
114114

115-
static tu_lookup_entry_t const _dfu_status_lookup[] =
115+
static _fuzz_thread tu_lookup_entry_t const _dfu_status_lookup[] =
116116
{
117117
{ .key = DFU_STATUS_OK , .data = "OK" },
118118
{ .key = DFU_STATUS_ERR_TARGET , .data = "errTARGET" },
@@ -132,7 +132,7 @@ static tu_lookup_entry_t const _dfu_status_lookup[] =
132132
{ .key = DFU_STATUS_ERR_STALLEDPKT , .data = "errSTALLEDPKT" },
133133
};
134134

135-
static tu_lookup_table_t const _dfu_status_table =
135+
static _fuzz_thread tu_lookup_table_t const _dfu_status_table =
136136
{
137137
.count = TU_ARRAY_SIZE(_dfu_status_lookup),
138138
.items = _dfu_status_lookup

src/class/hid/hid_device.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ typedef struct
5858
tusb_hid_descriptor_hid_t const * hid_descriptor;
5959
} hidd_interface_t;
6060

61-
CFG_TUSB_MEM_SECTION static hidd_interface_t _hidd_itf[CFG_TUD_HID];
61+
CFG_TUSB_MEM_SECTION static _fuzz_thread hidd_interface_t _hidd_itf[CFG_TUD_HID];
6262

6363
/*------------- Helpers -------------*/
6464
static inline uint8_t get_index_by_itfnum(uint8_t itf_num)

src/class/msc/msc_device.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ typedef struct
7171
uint8_t add_sense_qualifier;
7272
}mscd_interface_t;
7373

74-
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static mscd_interface_t _mscd_itf;
75-
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static uint8_t _mscd_buf[CFG_TUD_MSC_EP_BUFSIZE];
74+
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static _fuzz_thread mscd_interface_t _mscd_itf;
75+
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static _fuzz_thread uint8_t _mscd_buf[CFG_TUD_MSC_EP_BUFSIZE];
7676

7777
//--------------------------------------------------------------------+
7878
// INTERNAL OBJECT & FUNCTION DECLARATION
@@ -202,7 +202,7 @@ uint8_t rdwr10_validate_cmd(msc_cbw_t const* cbw)
202202
//--------------------------------------------------------------------+
203203
#if CFG_TUSB_DEBUG >= 2
204204

205-
TU_ATTR_UNUSED static tu_lookup_entry_t const _msc_scsi_cmd_lookup[] =
205+
TU_ATTR_UNUSED static _fuzz_thread tu_lookup_entry_t const _msc_scsi_cmd_lookup[] =
206206
{
207207
{ .key = SCSI_CMD_TEST_UNIT_READY , .data = "Test Unit Ready" },
208208
{ .key = SCSI_CMD_INQUIRY , .data = "Inquiry" },
@@ -217,7 +217,7 @@ TU_ATTR_UNUSED static tu_lookup_entry_t const _msc_scsi_cmd_lookup[] =
217217
{ .key = SCSI_CMD_WRITE_10 , .data = "Write10" }
218218
};
219219

220-
TU_ATTR_UNUSED static tu_lookup_table_t const _msc_scsi_cmd_table =
220+
TU_ATTR_UNUSED static _fuzz_thread tu_lookup_table_t const _msc_scsi_cmd_table =
221221
{
222222
.count = TU_ARRAY_SIZE(_msc_scsi_cmd_lookup),
223223
.items = _msc_scsi_cmd_lookup

src/class/net/ecm_rndis_device.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,19 @@ typedef struct
6161
#define CFG_TUD_NET_PACKET_PREFIX_LEN sizeof(rndis_data_packet_t)
6262
#define CFG_TUD_NET_PACKET_SUFFIX_LEN 0
6363

64-
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static uint8_t received[CFG_TUD_NET_PACKET_PREFIX_LEN + CFG_TUD_NET_MTU + CFG_TUD_NET_PACKET_PREFIX_LEN];
65-
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static uint8_t transmitted[CFG_TUD_NET_PACKET_PREFIX_LEN + CFG_TUD_NET_MTU + CFG_TUD_NET_PACKET_PREFIX_LEN];
64+
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static _fuzz_thread
65+
uint8_t received[CFG_TUD_NET_PACKET_PREFIX_LEN + CFG_TUD_NET_MTU + CFG_TUD_NET_PACKET_PREFIX_LEN];
66+
67+
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static _fuzz_thread
68+
uint8_t transmitted[CFG_TUD_NET_PACKET_PREFIX_LEN + CFG_TUD_NET_MTU + CFG_TUD_NET_PACKET_PREFIX_LEN];
6669

6770
struct ecm_notify_struct
6871
{
6972
tusb_control_request_t header;
7073
uint32_t downlink, uplink;
7174
};
7275

73-
static const struct ecm_notify_struct ecm_notify_nc =
76+
static _fuzz_thread const struct ecm_notify_struct ecm_notify_nc =
7477
{
7578
.header = {
7679
.bmRequestType = 0xA1,
@@ -80,7 +83,7 @@ static const struct ecm_notify_struct ecm_notify_nc =
8083
},
8184
};
8285

83-
static const struct ecm_notify_struct ecm_notify_csc =
86+
static _fuzz_thread const struct ecm_notify_struct ecm_notify_csc =
8487
{
8588
.header = {
8689
.bmRequestType = 0xA1,
@@ -92,7 +95,7 @@ static const struct ecm_notify_struct ecm_notify_csc =
9295
};
9396

9497
// TODO remove CFG_TUSB_MEM_SECTION, control internal buffer is already in this special section
95-
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static union
98+
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static _fuzz_thread union
9699
{
97100
uint8_t rndis_buf[120];
98101
struct ecm_notify_struct ecm_buf;
@@ -102,9 +105,9 @@ CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static union
102105
// INTERNAL OBJECT & FUNCTION DECLARATION
103106
//--------------------------------------------------------------------+
104107
// TODO remove CFG_TUSB_MEM_SECTION
105-
CFG_TUSB_MEM_SECTION static netd_interface_t _netd_itf;
108+
CFG_TUSB_MEM_SECTION static _fuzz_thread netd_interface_t _netd_itf;
106109

107-
static bool can_xmit;
110+
static _fuzz_thread bool can_xmit;
108111

109112
void tud_network_recv_renew(void)
110113
{

src/class/net/ncm_device.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ typedef struct
130130
// INTERNAL OBJECT & FUNCTION DECLARATION
131131
//--------------------------------------------------------------------+
132132

133-
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static const ntb_parameters_t ntb_parameters = {
133+
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static _fuzz_thread const ntb_parameters_t ntb_parameters = {
134134
.wLength = sizeof(ntb_parameters_t),
135135
.bmNtbFormatsSupported = 0x01,
136136
.dwNtbInMaxSize = CFG_TUD_NCM_IN_NTB_MAX_SIZE,
@@ -145,11 +145,11 @@ CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static const ntb_parameters_t ntb_parame
145145
.wNtbOutMaxDatagrams = 0
146146
};
147147

148-
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static transmit_ntb_t transmit_ntb[2];
148+
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static _fuzz_thread transmit_ntb_t transmit_ntb[2];
149149

150-
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static uint8_t receive_ntb[CFG_TUD_NCM_OUT_NTB_MAX_SIZE];
150+
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static _fuzz_thread uint8_t receive_ntb[CFG_TUD_NCM_OUT_NTB_MAX_SIZE];
151151

152-
static ncm_interface_t ncm_interface;
152+
static _fuzz_thread ncm_interface_t ncm_interface;
153153

154154
/*
155155
* Set up the NTB state in ncm_interface to be ready to add datagrams.
@@ -196,7 +196,7 @@ static void ncm_start_tx(void) {
196196
ncm_prepare_for_tx();
197197
}
198198

199-
static struct ecm_notify_struct ncm_notify_connected =
199+
static _fuzz_thread struct ecm_notify_struct ncm_notify_connected =
200200
{
201201
.header = {
202202
.bmRequestType_bit = {
@@ -210,7 +210,7 @@ static struct ecm_notify_struct ncm_notify_connected =
210210
},
211211
};
212212

213-
static struct ecm_notify_struct ncm_notify_speed_change =
213+
static _fuzz_thread struct ecm_notify_struct ncm_notify_speed_change =
214214
{
215215
.header = {
216216
.bmRequestType_bit = {

src/class/usbtmc/usbtmc_device.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878

7979
#ifdef xDEBUG
8080
#include "uart_util.h"
81-
static char logMsg[150];
81+
static _fuzz_thread char logMsg[150];
8282
#endif
8383

8484
// Buffer size must be an exact multiple of the max packet size for both
@@ -143,7 +143,7 @@ typedef struct
143143
usbtmc_capabilities_specific_t const * capabilities;
144144
} usbtmc_interface_state_t;
145145

146-
CFG_TUSB_MEM_SECTION static usbtmc_interface_state_t usbtmc_state =
146+
CFG_TUSB_MEM_SECTION static _fuzz_thread usbtmc_interface_state_t usbtmc_state =
147147
{
148148
.itf_id = 0xFF,
149149
};
@@ -154,8 +154,8 @@ TU_VERIFY_STATIC(USBTMCD_BUFFER_SIZE >= 32u,"USBTMC dev buffer size too small");
154154
static bool handle_devMsgOutStart(uint8_t rhport, void *data, size_t len);
155155
static bool handle_devMsgOut(uint8_t rhport, void *data, size_t len, size_t packetLen);
156156

157-
static uint8_t termChar;
158-
static uint8_t termCharRequested = false;
157+
static _fuzz_thread uint8_t termChar;
158+
static _fuzz_thread uint8_t termCharRequested = false;
159159

160160
#if OSAL_MUTEX_REQUIRED
161161
static OSAL_MUTEX_DEF(usbtmcLockBuffer);

src/class/vendor/vendor_device.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ typedef struct
5959
CFG_TUSB_MEM_ALIGN uint8_t epin_buf[CFG_TUD_VENDOR_EPSIZE];
6060
} vendord_interface_t;
6161

62-
CFG_TUSB_MEM_SECTION static vendord_interface_t _vendord_itf[CFG_TUD_VENDOR];
62+
CFG_TUSB_MEM_SECTION static _fuzz_thread vendord_interface_t _vendord_itf[CFG_TUD_VENDOR];
6363

6464
#define ITF_MEM_RESET_SIZE offsetof(vendord_interface_t, rx_ff)
6565

src/class/vendor/vendor_device.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@ void tud_vendor_n_read_flush (uint8_t itf);
5050
uint32_t tud_vendor_n_write (uint8_t itf, void const* buffer, uint32_t bufsize);
5151
uint32_t tud_vendor_n_write_available (uint8_t itf);
5252

53-
static inline
54-
uint32_t tud_vendor_n_write_str (uint8_t itf, char const* str);
53+
static inline uint32_t tud_vendor_n_write_str (uint8_t itf, char const* str);
5554
uint32_t tud_vendor_n_flush (uint8_t itf);
5655

5756
//--------------------------------------------------------------------+

src/class/video/video_device.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,11 @@ typedef struct TU_ATTR_PACKED {
125125
//--------------------------------------------------------------------+
126126
// INTERNAL OBJECT & FUNCTION DECLARATION
127127
//--------------------------------------------------------------------+
128-
CFG_TUSB_MEM_SECTION static videod_interface_t _videod_itf[CFG_TUD_VIDEO];
129-
CFG_TUSB_MEM_SECTION static videod_streaming_interface_t _videod_streaming_itf[CFG_TUD_VIDEO_STREAMING];
128+
CFG_TUSB_MEM_SECTION static _fuzz_thread videod_interface_t _videod_itf[CFG_TUD_VIDEO];
129+
CFG_TUSB_MEM_SECTION static _fuzz_thread videod_streaming_interface_t _videod_streaming_itf[CFG_TUD_VIDEO_STREAMING];
130130

131-
static uint8_t const _cap_get = 0x1u; /* support for GET */
132-
static uint8_t const _cap_get_set = 0x3u; /* support for GET and SET */
131+
static _fuzz_thread uint8_t const _cap_get = 0x1u; /* support for GET */
132+
static _fuzz_thread uint8_t const _cap_get_set = 0x3u; /* support for GET and SET */
133133

134134
/** Get interface number from the interface descriptor
135135
*

0 commit comments

Comments
 (0)