* [PATCH BlueZ 0/3] tests: add TX timestamping tests
@ 2024-03-02 20:09 Pauli Virtanen
2024-03-02 20:09 ` [PATCH BlueZ 1/3] lib: add BT_SCM_ERROR sock_extended_err CMSG Pauli Virtanen
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Pauli Virtanen @ 2024-03-02 20:09 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Pauli Virtanen
Add tests for ISO and L2CAP TX timestamping
Pauli Virtanen (3):
lib: add BT_SCM_ERROR sock_extended_err CMSG
iso-tester: Add tests for TX timestamping
l2cap-tester: Add test for TX timestamping
lib/bluetooth.h | 1 +
tools/iso-tester.c | 169 ++++++++++++++++++++++++++++++++++++++++---
tools/l2cap-tester.c | 106 +++++++++++++++++++++++++--
tools/tester-utils.h | 163 +++++++++++++++++++++++++++++++++++++++++
4 files changed, 424 insertions(+), 15 deletions(-)
create mode 100644 tools/tester-utils.h
--
2.44.0
^ permalink raw reply [flat|nested] 13+ messages in thread* [PATCH BlueZ 1/3] lib: add BT_SCM_ERROR sock_extended_err CMSG 2024-03-02 20:09 [PATCH BlueZ 0/3] tests: add TX timestamping tests Pauli Virtanen @ 2024-03-02 20:09 ` Pauli Virtanen 2024-03-02 21:06 ` tests: add TX timestamping tests bluez.test.bot 2024-03-02 20:09 ` [PATCH BlueZ 2/3] iso-tester: Add tests for TX timestamping Pauli Virtanen ` (2 subsequent siblings) 3 siblings, 1 reply; 13+ messages in thread From: Pauli Virtanen @ 2024-03-02 20:09 UTC (permalink / raw) To: linux-bluetooth; +Cc: Pauli Virtanen Add new CMSG type used in new kernel TX timestamping support. --- lib/bluetooth.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/bluetooth.h b/lib/bluetooth.h index ba08c70e6..90e167f16 100644 --- a/lib/bluetooth.h +++ b/lib/bluetooth.h @@ -141,6 +141,7 @@ struct bt_voice { #define BT_PKT_STATUS 16 #define BT_SCM_PKT_STATUS 0x03 +#define BT_SCM_ERROR 0x04 #define BT_ISO_QOS 17 -- 2.44.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* RE: tests: add TX timestamping tests 2024-03-02 20:09 ` [PATCH BlueZ 1/3] lib: add BT_SCM_ERROR sock_extended_err CMSG Pauli Virtanen @ 2024-03-02 21:06 ` bluez.test.bot 0 siblings, 0 replies; 13+ messages in thread From: bluez.test.bot @ 2024-03-02 21:06 UTC (permalink / raw) To: linux-bluetooth, pav [-- Attachment #1: Type: text/plain, Size: 24429 bytes --] This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=831820 ---Test result--- Test Summary: CheckPatch PASS 1.47 seconds GitLint PASS 0.83 seconds BuildEll PASS 25.73 seconds BluezMake FAIL 48.53 seconds MakeCheck FAIL 141.99 seconds MakeDistcheck PASS 159.67 seconds CheckValgrind FAIL 40.58 seconds CheckSmatch FAIL 90.79 seconds bluezmakeextell FAIL 23.45 seconds IncrementalBuild FAIL 690.99 seconds ScanBuild FAIL 543.24 seconds Details ############################## Test: BluezMake - FAIL Desc: Build BlueZ Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1264:9: error: variable ‘so’ has initializer but incomplete type 1264 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1265:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1265 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1265:12: error: excess elements in struct initializer [-Werror] 1265 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1265:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1264:25: error: storage size of ‘so’ isn’t known 1264 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1264:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7803: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12723:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12723 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:4645: all] Error 2 ############################## Test: MakeCheck - FAIL Desc: Run Bluez Make Check Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1264:9: error: variable ‘so’ has initializer but incomplete type 1264 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1265:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1265 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1265:12: error: excess elements in struct initializer [-Werror] 1265 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1265:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1264:25: error: storage size of ‘so’ isn’t known 1264 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1264:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7803: tools/l2cap-tester.o] Error 1 make: *** [Makefile:12180: check] Error 2 ############################## Test: CheckValgrind - FAIL Desc: Run Bluez Make Check with Valgrind Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1264:9: error: variable ‘so’ has initializer but incomplete type 1264 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1265:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1265 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1265:12: error: excess elements in struct initializer [-Werror] 1265 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1265:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1264:25: error: storage size of ‘so’ isn’t known 1264 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1264:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7803: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12723:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12723 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:12180: check] Error 2 ############################## Test: CheckSmatch - FAIL Desc: Run smatch tool with source Output: src/shared/crypto.c:271:21: warning: Variable length array is used. src/shared/crypto.c:272:23: warning: Variable length array is used. src/shared/gatt-helpers.c:768:31: warning: Variable length array is used. src/shared/gatt-helpers.c:830:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1323:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1354:23: warning: Variable length array is used. src/shared/gatt-server.c:276:25: warning: Variable length array is used. src/shared/gatt-server.c:619:25: warning: Variable length array is used. src/shared/gatt-server.c:718:25: warning: Variable length array is used. src/shared/shell.c: note: in included file (through /usr/include/readline/readline.h): /usr/include/readline/rltypedefs.h:35:23: warning: non-ANSI function declaration of function 'Function' /usr/include/readline/rltypedefs.h:36:25: warning: non-ANSI function declaration of function 'VFunction' /usr/include/readline/rltypedefs.h:37:27: warning: non-ANSI function declaration of function 'CPFunction' /usr/include/readline/rltypedefs.h:38:29: warning: non-ANSI function declaration of function 'CPPFunction' src/shared/crypto.c:271:21: warning: Variable length array is used. src/shared/crypto.c:272:23: warning: Variable length array is used. src/shared/gatt-helpers.c:768:31: warning: Variable length array is used. src/shared/gatt-helpers.c:830:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1323:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1354:23: warning: Variable length array is used. src/shared/gatt-server.c:276:25: warning: Variable length array is used. src/shared/gatt-server.c:619:25: warning: Variable length array is used. src/shared/gatt-server.c:718:25: warning: Variable length array is used. src/shared/shell.c: note: in included file (through /usr/include/readline/readline.h): /usr/include/readline/rltypedefs.h:35:23: warning: non-ANSI function declaration of function 'Function' /usr/include/readline/rltypedefs.h:36:25: warning: non-ANSI function declaration of function 'VFunction' /usr/include/readline/rltypedefs.h:37:27: warning: non-ANSI function declaration of function 'CPFunction' /usr/include/readline/rltypedefs.h:38:29: warning: non-ANSI function declaration of function 'CPPFunction' tools/mesh-cfgtest.c:1453:17: warning: unknown escape sequence: '\%' tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1264:9: error: variable ‘so’ has initializer but incomplete type 1264 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1265:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1265 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1265:12: error: excess elements in struct initializer [-Werror] 1265 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1265:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1264:25: error: storage size of ‘so’ isn’t known 1264 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1264:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7803: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4645: all] Error 2 ############################## Test: bluezmakeextell - FAIL Desc: Build Bluez with External ELL Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1264:9: error: variable ‘so’ has initializer but incomplete type 1264 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1265:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1265 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1265:12: error: excess elements in struct initializer [-Werror] 1265 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1265:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1264:25: error: storage size of ‘so’ isn’t known 1264 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1264:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7803: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4645: all] Error 2 ############################## Test: IncrementalBuild - FAIL Desc: Incremental build with the patches in the series Output: [BlueZ,2/3] iso-tester: Add tests for TX timestamping tools/iso-tester.c: In function ‘iso_tx_timestamping’: tools/iso-tester.c:2128:9: error: variable ‘so’ has initializer but incomplete type 2128 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/iso-tester.c:2129:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 2129 | .flags = isodata->so_timestamping, | ^~~~~ tools/iso-tester.c:2129:12: error: excess elements in struct initializer [-Werror] 2129 | .flags = isodata->so_timestamping, | ^~~~~~~ tools/iso-tester.c:2129:12: note: (near initialization for ‘so’) tools/iso-tester.c:2128:25: error: storage size of ‘so’ isn’t known 2128 | struct so_timestamping so = { | ^~ tools/iso-tester.c:2128:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7803: tools/iso-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12723:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12723 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:4645: all] Error 2 ############################## Test: ScanBuild - FAIL Desc: Run Scan Build Output: src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed gatt_db_unregister(op->client->db, op->db_id); ^~~~~~~~~~ src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed discovery_op_complete(op, false, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed discover_all(op); ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed discovery_op_ref(op), ^~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed complete_write_long_op(req, success, 0, false); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed request_unref(req); ^~~~~~~~~~~~~~~~~~ 12 warnings generated. src/shared/bap.c:1156:2: warning: Use of memory after it is freed DBG(stream->bap, "stream %p", stream); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/bap.c:40:2: note: expanded from macro 'DBG' bap_debug(_bap, "%s:%s() " fmt, __FILE__, __func__, ## arg) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. src/shared/shell.c:1228:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt') if (c != opt->options[index - offset].val) { ^~~~~~~~~~~~ 1 warning generated. src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed gatt_db_unregister(op->client->db, op->db_id); ^~~~~~~~~~ src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed discovery_op_complete(op, false, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed discover_all(op); ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed discovery_op_ref(op), ^~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed complete_write_long_op(req, success, 0, false); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed request_unref(req); ^~~~~~~~~~~~~~~~~~ 12 warnings generated. src/shared/bap.c:1156:2: warning: Use of memory after it is freed DBG(stream->bap, "stream %p", stream); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/bap.c:40:2: note: expanded from macro 'DBG' bap_debug(_bap, "%s:%s() " fmt, __FILE__, __func__, ## arg) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. src/shared/shell.c:1228:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt') if (c != opt->options[index - offset].val) { ^~~~~~~~~~~~ 1 warning generated. tools/hciattach.c:816:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 10)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:864:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:886:8: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 10)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:908:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:929:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:973:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 6)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 warnings generated. src/oui.c:50:2: warning: Value stored to 'hwdb' is never read hwdb = udev_hwdb_unref(hwdb); ^ ~~~~~~~~~~~~~~~~~~~~~ src/oui.c:53:2: warning: Value stored to 'udev' is never read udev = udev_unref(udev); ^ ~~~~~~~~~~~~~~~~ 2 warnings generated. tools/hcidump.c:180:9: warning: Potential leak of memory pointed to by 'dp' if (fds[i].fd == sock) ^~~ tools/hcidump.c:248:17: warning: Assigned value is garbage or undefined dh->ts_sec = htobl(frm.ts.tv_sec); ^ ~~~~~~~~~~~~~~~~~~~~ tools/hcidump.c:326:9: warning: 1st function call argument is an uninitialized value if (be32toh(dp.flags) & 0x02) { ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:341:20: warning: 1st function call argument is an uninitialized value frm.data_len = be32toh(dp.len); ^~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:346:14: warning: 1st function call argument is an uninitialized value opcode = be32toh(dp.flags) & 0xffff; ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:384:17: warning: Assigned value is garbage or undefined frm.data_len = btohs(dh.len); ^ ~~~~~~~~~~~~~ tools/hcidump.c:394:11: warning: Assigned value is garbage or undefined frm.len = frm.data_len; ^ ~~~~~~~~~~~~ tools/hcidump.c:398:9: warning: 1st function call argument is an uninitialized value ts = be64toh(ph.ts); ^~~~~~~~~~~~~~ /usr/include/endian.h:51:22: note: expanded from macro 'be64toh' # define be64toh(x) __bswap_64 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:403:13: warning: 1st function call argument is an uninitialized value frm.in = be32toh(dp.flags) & 0x01; ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:408:11: warning: Assigned value is garbage or undefined frm.in = dh.in; ^ ~~~~~ tools/hcidump.c:437:7: warning: Null pointer passed to 1st parameter expecting 'nonnull' fd = open(file, open_flags, 0644); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11 warnings generated. tools/rfcomm.c:234:3: warning: Value stored to 'i' is never read i = execvp(cmdargv[0], cmdargv); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:234:7: warning: Null pointer passed to 1st parameter expecting 'nonnull' i = execvp(cmdargv[0], cmdargv); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:354:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd' if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:497:14: warning: Assigned value is garbage or undefined req.channel = raddr.rc_channel; ^ ~~~~~~~~~~~~~~~~ tools/rfcomm.c:515:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd' if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 warnings generated. src/sdp-xml.c:126:10: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ src/sdp-xml.c:300:11: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ src/sdp-xml.c:338:11: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ 3 warnings generated. tools/ciptool.c:350:7: warning: 5th function call argument is an uninitialized value sk = do_connect(ctl, dev_id, &src, &dst, psm, (1 << CMTP_LOOPBACK)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. tools/sdptool.c:941:26: warning: Result of 'malloc' is converted to a pointer of type 'uint32_t', which is incompatible with sizeof operand type 'int' uint32_t *value_int = malloc(sizeof(int)); ~~~~~~~~~~ ^~~~~~ ~~~~~~~~~~~ tools/sdptool.c:980:4: warning: 1st function call argument is an uninitialized value free(allocArray[i]); ^~~~~~~~~~~~~~~~~~~ tools/sdptool.c:3777:2: warning: Potential leak of memory pointed to by 'si.name' return add_service(0, &si); ^~~~~~~~~~~~~~~~~~~~~~~~~~ tools/sdptool.c:4112:4: warning: Potential leak of memory pointed to by 'context.svc' return -1; ^~~~~~~~~ 4 warnings generated. tools/iso-tester.c: In function ‘iso_tx_timestamping’: tools/iso-tester.c:2128:9: error: variable ‘so’ has initializer but incomplete type 2128 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/iso-tester.c:2129:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 2129 | .flags = isodata->so_timestamping, | ^~~~~ tools/iso-tester.c:2129:12: error: excess elements in struct initializer [-Werror] 2129 | .flags = isodata->so_timestamping, | ^~~~~~~ tools/iso-tester.c:2129:12: note: (near initialization for ‘so’) tools/iso-tester.c:2128:25: error: storage size of ‘so’ isn’t known 2128 | struct so_timestamping so = { | ^~ tools/iso-tester.c:2128:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7803: tools/iso-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4645: all] Error 2 --- Regards, Linux Bluetooth ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH BlueZ 2/3] iso-tester: Add tests for TX timestamping 2024-03-02 20:09 [PATCH BlueZ 0/3] tests: add TX timestamping tests Pauli Virtanen 2024-03-02 20:09 ` [PATCH BlueZ 1/3] lib: add BT_SCM_ERROR sock_extended_err CMSG Pauli Virtanen @ 2024-03-02 20:09 ` Pauli Virtanen 2024-03-02 20:09 ` [PATCH BlueZ 3/3] l2cap-tester: Add test " Pauli Virtanen 2024-03-04 14:43 ` [PATCH BlueZ 0/3] tests: add TX timestamping tests Luiz Augusto von Dentz 3 siblings, 0 replies; 13+ messages in thread From: Pauli Virtanen @ 2024-03-02 20:09 UTC (permalink / raw) To: linux-bluetooth; +Cc: Pauli Virtanen Add TX timestamping test utilities in new tester-utils.h, so that they can be shared between testers. Add tests: ISO Send - TX Timestamping ISO Send - TX Sched Timestamping ISO Send - TX Msg Timestamping --- tools/iso-tester.c | 169 ++++++++++++++++++++++++++++++++++++++++--- tools/tester-utils.h | 163 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 322 insertions(+), 10 deletions(-) create mode 100644 tools/tester-utils.h diff --git a/tools/iso-tester.c b/tools/iso-tester.c index d1f0be180..437674a7d 100644 --- a/tools/iso-tester.c +++ b/tools/iso-tester.c @@ -18,6 +18,9 @@ #include <poll.h> #include <stdbool.h> +#include <linux/errqueue.h> +#include <linux/net_tstamp.h> + #include <glib.h> #include "lib/bluetooth.h" @@ -34,6 +37,8 @@ #include "src/shared/util.h" #include "src/shared/queue.h" +#include "tester-utils.h" + #define QOS_IO(_interval, _latency, _sdu, _phy, _rtn) \ { \ .interval = _interval, \ @@ -462,11 +467,12 @@ struct test_data { uint16_t handle; uint16_t acl_handle; struct queue *io_queue; - unsigned int io_id[2]; + unsigned int io_id[3]; uint8_t client_num; int step; bool reconnect; bool suspending; + struct tx_tstamp_data tx_ts; }; struct iso_client_data { @@ -487,6 +493,10 @@ struct iso_client_data { size_t base_len; bool listen_bind; bool pa_bind; + uint32_t so_timestamping; + bool msg_timestamping; + unsigned int send_extra; + unsigned int send_extra_pre_ts; }; static void mgmt_debug(const char *str, void *user_data) @@ -675,15 +685,14 @@ static void io_free(void *data) static void test_data_free(void *test_data) { struct test_data *data = test_data; + unsigned int i; if (data->io_queue) queue_destroy(data->io_queue, io_free); - if (data->io_id[0] > 0) - g_source_remove(data->io_id[0]); - - if (data->io_id[1] > 0) - g_source_remove(data->io_id[1]); + for (i = 0; i < ARRAY_SIZE(data->io_id); ++i) + if (data->io_id[i] > 0) + g_source_remove(data->io_id[i]); free(data); } @@ -985,6 +994,38 @@ static const struct iso_client_data connect_16_2_1_send = { .send = &send_16_2_1, }; +static const struct iso_client_data connect_send_tx_timestamping = { + .qos = QOS_16_2_1, + .expect_err = 0, + .send = &send_16_2_1, + .so_timestamping = (SOF_TIMESTAMPING_SOFTWARE | + SOF_TIMESTAMPING_OPT_ID | + SOF_TIMESTAMPING_TX_SOFTWARE), + .send_extra = 1, + .send_extra_pre_ts = 2, +}; + +static const struct iso_client_data connect_send_tx_sched_timestamping = { + .qos = QOS_16_2_1, + .expect_err = 0, + .send = &send_16_2_1, + .so_timestamping = (SOF_TIMESTAMPING_SOFTWARE | + SOF_TIMESTAMPING_TX_SOFTWARE | + SOF_TIMESTAMPING_OPT_TSONLY | + SOF_TIMESTAMPING_TX_SCHED), + .send_extra = 1, +}; + +static const struct iso_client_data connect_send_tx_msg_timestamping = { + .qos = QOS_16_2_1, + .expect_err = 0, + .send = &send_16_2_1, + .so_timestamping = (SOF_TIMESTAMPING_SOFTWARE | + SOF_TIMESTAMPING_TX_SOFTWARE), + .send_extra = 1, + .msg_timestamping = true, +}; + static const struct iso_client_data listen_16_2_1_recv = { .qos = QOS_16_2_1, .expect_err = 0, @@ -1408,14 +1449,17 @@ static void bthost_recv_data(const void *buf, uint16_t len, void *user_data) struct test_data *data = user_data; const struct iso_client_data *isodata = data->test_data; + --data->step; + tester_print("Client received %u bytes of data", len); if (isodata->send && (isodata->send->iov_len != len || memcmp(isodata->send->iov_base, buf, len))) { if (!isodata->recv->iov_base) tester_test_failed(); - } else + } else if (!data->step) { tester_test_passed(); + } } static void bthost_iso_disconnected(void *user_data) @@ -2056,17 +2100,95 @@ static void iso_recv(struct test_data *data, GIOChannel *io) data->io_id[0] = g_io_add_watch(io, G_IO_IN, iso_recv_data, data); } -static void iso_send(struct test_data *data, GIOChannel *io) +static gboolean iso_recv_errqueue(GIOChannel *io, GIOCondition cond, + gpointer user_data) { + struct test_data *data = user_data; const struct iso_client_data *isodata = data->test_data; - ssize_t ret; + int sk = g_io_channel_unix_get_fd(io); + int err; + + data->step--; + + err = tx_tstamp_recv(&data->tx_ts, sk, isodata->send->iov_len); + if (err > 0) + return TRUE; + else if (!err && !data->step) + tester_test_passed(); + else + tester_test_failed(); + + data->io_id[2] = 0; + return FALSE; +} + +static void iso_tx_timestamping(struct test_data *data, GIOChannel *io) +{ + const struct iso_client_data *isodata = data->test_data; + struct so_timestamping so = { + .flags = isodata->so_timestamping, + }; int sk; + int err; + unsigned int count; + + if (!(isodata->so_timestamping & SOF_TIMESTAMPING_TX_RECORD_MASK)) + return; + + tester_print("Enabling TX timestamping"); + + tx_tstamp_init(&data->tx_ts, isodata->so_timestamping); + + for (count = 0; count < isodata->send_extra + 1; ++count) + data->step += tx_tstamp_expect(&data->tx_ts); sk = g_io_channel_unix_get_fd(io); + data->io_id[2] = g_io_add_watch(io, G_IO_ERR, iso_recv_errqueue, data); + + if (isodata->msg_timestamping) + so.flags &= ~SOF_TIMESTAMPING_TX_RECORD_MASK; + + err = setsockopt(sk, SOL_SOCKET, SO_TIMESTAMPING, &so, sizeof(so)); + if (err < 0) { + tester_warn("setsockopt SO_TIMESTAMPING: %s (%d)", + strerror(errno), errno); + tester_test_failed(); + return; + } +} + +static void iso_send_data(struct test_data *data, GIOChannel *io) +{ + const struct iso_client_data *isodata = data->test_data; + char control[CMSG_SPACE(sizeof(uint32_t))]; + struct msghdr msg = { + .msg_iov = (struct iovec *)isodata->send, + .msg_iovlen = 1, + }; + struct cmsghdr *cmsg; + ssize_t ret; + int sk; + tester_print("Writing %zu bytes of data", isodata->send->iov_len); - ret = writev(sk, isodata->send, 1); + sk = g_io_channel_unix_get_fd(io); + + if (isodata->msg_timestamping) { + memset(control, 0, sizeof(control)); + msg.msg_control = control; + msg.msg_controllen = sizeof(control); + + cmsg = CMSG_FIRSTHDR(&msg); + cmsg->cmsg_level = SOL_SOCKET; + cmsg->cmsg_type = SO_TIMESTAMPING; + cmsg->cmsg_len = CMSG_LEN(sizeof(uint32_t)); + + *((uint32_t *)CMSG_DATA(cmsg)) = (isodata->so_timestamping & + SOF_TIMESTAMPING_TX_RECORD_MASK); + } + + ret = sendmsg(sk, &msg, 0); if (ret < 0 || isodata->send->iov_len != (size_t) ret) { tester_warn("Failed to write %zu bytes: %s (%d)", isodata->send->iov_len, strerror(errno), errno); @@ -2074,6 +2196,22 @@ static void iso_send(struct test_data *data, GIOChannel *io) return; } + data->step++; +} + +static void iso_send(struct test_data *data, GIOChannel *io) +{ + const struct iso_client_data *isodata = data->test_data; + unsigned int count; + + for (count = 0; count < isodata->send_extra_pre_ts; ++count) + iso_send_data(data, io); + + iso_tx_timestamping(data, io); + + for (count = 0; count < isodata->send_extra + 1; ++count) + iso_send_data(data, io); + if (isodata->bcast) { tester_test_passed(); return; @@ -3172,6 +3310,17 @@ int main(int argc, char *argv[]) test_iso("ISO Send - Success", &connect_16_2_1_send, setup_powered, test_connect); + test_iso("ISO Send - TX Timestamping", &connect_send_tx_timestamping, + setup_powered, test_connect); + + test_iso("ISO Send - TX Sched Timestamping", + &connect_send_tx_sched_timestamping, setup_powered, + test_connect); + + test_iso("ISO Send - TX Msg Timestamping", + &connect_send_tx_msg_timestamping, setup_powered, + test_connect); + test_iso("ISO Receive - Success", &listen_16_2_1_recv, setup_powered, test_listen); diff --git a/tools/tester-utils.h b/tools/tester-utils.h new file mode 100644 index 000000000..04dec787a --- /dev/null +++ b/tools/tester-utils.h @@ -0,0 +1,163 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * + * BlueZ - Bluetooth protocol stack for Linux + * + * Copyright (C) 2022 Intel Corporation. + * + */ + +#include <stdbool.h> +#include <stdlib.h> +#include <stdint.h> +#include <time.h> +#include <sys/socket.h> +#include <linux/errqueue.h> +#include <linux/net_tstamp.h> + +#include <glib.h> + +#define SEC_NSEC(_t) ((_t) * 1000000000LL) +#define TS_NSEC(_ts) (SEC_NSEC((_ts)->tv_sec) + (_ts)->tv_nsec) + +struct tx_tstamp_data { + struct { + uint32_t id; + uint32_t type; + } expect[16]; + unsigned int pos; + unsigned int count; + unsigned int sent; + uint32_t so_timestamping; +}; + +static inline void tx_tstamp_init(struct tx_tstamp_data *data, + uint32_t so_timestamping) +{ + memset(data, 0, sizeof(*data)); + memset(data->expect, 0xff, sizeof(data->expect)); + + data->so_timestamping = so_timestamping; +} + +static inline int tx_tstamp_expect(struct tx_tstamp_data *data) +{ + unsigned int pos = data->count; + int steps; + + if (data->so_timestamping & SOF_TIMESTAMPING_TX_SCHED) { + g_assert(pos <= ARRAY_SIZE(data->expect)); + data->expect[pos].type = SCM_TSTAMP_SCHED; + data->expect[pos].id = data->sent; + pos++; + } + + if (data->so_timestamping & SOF_TIMESTAMPING_TX_SOFTWARE) { + g_assert(pos <= ARRAY_SIZE(data->expect)); + data->expect[pos].type = SCM_TSTAMP_SND; + data->expect[pos].id = data->sent; + pos++; + } + + data->sent++; + + steps = pos - data->count; + data->count = pos; + return steps; +} + +static inline int tx_tstamp_recv(struct tx_tstamp_data *data, int sk, int len) +{ + unsigned char control[512]; + ssize_t ret; + char buf[1024]; + struct msghdr msg; + struct iovec iov; + struct cmsghdr *cmsg; + struct scm_timestamping *tss = NULL; + struct sock_extended_err *serr = NULL; + struct timespec now; + + iov.iov_base = buf; + iov.iov_len = sizeof(buf); + + memset(&msg, 0, sizeof(msg)); + msg.msg_iov = &iov; + msg.msg_iovlen = 1; + msg.msg_control = control; + msg.msg_controllen = sizeof(control); + + ret = recvmsg(sk, &msg, MSG_ERRQUEUE); + if (ret < 0) { + tester_warn("Failed to read from errqueue: %s (%d)", + strerror(errno), errno); + return -EINVAL; + } + + if (data->so_timestamping & SOF_TIMESTAMPING_OPT_TSONLY) { + if (ret != 0) { + tester_warn("Packet copied back to errqueue"); + return -EINVAL; + } + } else if (len > ret) { + tester_warn("Packet not copied back to errqueue: %zd", ret); + return -EINVAL; + } + + for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL; + cmsg = CMSG_NXTHDR(&msg, cmsg)) { + if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_TIMESTAMPING) { + tss = (void *)CMSG_DATA(cmsg); + } else if (cmsg->cmsg_level == SOL_BLUETOOTH && + cmsg->cmsg_type == BT_SCM_ERROR) { + serr = (void *)CMSG_DATA(cmsg); + } + } + + if (!tss) { + tester_warn("SCM_TIMESTAMPING not found"); + return -EINVAL; + } + + if (!serr) { + tester_warn("BT_SCM_ERROR not found"); + return -EINVAL; + } + + if (serr->ee_errno != ENOMSG || + serr->ee_origin != SO_EE_ORIGIN_TIMESTAMPING) { + tester_warn("BT_SCM_ERROR wrong for timestamping"); + return -EINVAL; + } + + clock_gettime(CLOCK_REALTIME, &now); + + if (TS_NSEC(&now) < TS_NSEC(tss->ts) || + TS_NSEC(&now) > TS_NSEC(tss->ts) + SEC_NSEC(10)) { + tester_warn("nonsense in timestamp"); + return -EINVAL; + } + + if (data->pos >= data->count) { + tester_warn("Too many timestamps"); + return -EINVAL; + } + + if ((data->so_timestamping & SOF_TIMESTAMPING_OPT_ID) && + serr->ee_data != data->expect[data->pos].id) { + tester_warn("Bad timestamp id %u", serr->ee_data); + return -EINVAL; + } + + if (serr->ee_info != data->expect[data->pos].type) { + tester_warn("Bad timestamp type %u", serr->ee_info); + return -EINVAL; + } + + tester_print("Got valid TX timestamp %u", data->pos); + + ++data->pos; + + return data->count - data->pos; +} -- 2.44.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH BlueZ 3/3] l2cap-tester: Add test for TX timestamping 2024-03-02 20:09 [PATCH BlueZ 0/3] tests: add TX timestamping tests Pauli Virtanen 2024-03-02 20:09 ` [PATCH BlueZ 1/3] lib: add BT_SCM_ERROR sock_extended_err CMSG Pauli Virtanen 2024-03-02 20:09 ` [PATCH BlueZ 2/3] iso-tester: Add tests for TX timestamping Pauli Virtanen @ 2024-03-02 20:09 ` Pauli Virtanen 2024-03-04 14:43 ` [PATCH BlueZ 0/3] tests: add TX timestamping tests Luiz Augusto von Dentz 3 siblings, 0 replies; 13+ messages in thread From: Pauli Virtanen @ 2024-03-02 20:09 UTC (permalink / raw) To: linux-bluetooth; +Cc: Pauli Virtanen Add test L2CAP BR/EDR Client - TX Timestamping --- tools/l2cap-tester.c | 106 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 101 insertions(+), 5 deletions(-) diff --git a/tools/l2cap-tester.c b/tools/l2cap-tester.c index 461f2c27c..f990110d9 100644 --- a/tools/l2cap-tester.c +++ b/tools/l2cap-tester.c @@ -30,6 +30,9 @@ #include "src/shared/tester.h" #include "src/shared/mgmt.h" +#include "src/shared/util.h" + +#include "tester-utils.h" struct test_data { const void *test_data; @@ -38,12 +41,15 @@ struct test_data { struct hciemu *hciemu; enum hciemu_type hciemu_type; unsigned int io_id; + unsigned int err_io_id; uint16_t handle; uint16_t scid; uint16_t dcid; int sk; int sk2; bool host_disconnected; + int step; + struct tx_tstamp_data tx_ts; }; struct l2cap_data { @@ -86,6 +92,9 @@ struct l2cap_data { bool defer; bool shut_sock_wr; + + uint32_t so_timestamping; + unsigned int send_extra; }; static void print_debug(const char *str, void *user_data) @@ -226,6 +235,11 @@ static void test_post_teardown(const void *test_data) data->io_id = 0; } + if (data->err_io_id > 0) { + g_source_remove(data->err_io_id); + data->err_io_id = 0; + } + hciemu_unref(data->hciemu); data->hciemu = NULL; } @@ -245,6 +259,7 @@ static void test_data_free(void *test_data) break; \ user->hciemu_type = HCIEMU_TYPE_BREDR; \ user->io_id = 0; \ + user->err_io_id = 0; \ user->test_data = data; \ tester_add_full(name, data, \ test_pre_setup, setup, func, NULL, \ @@ -259,6 +274,7 @@ static void test_data_free(void *test_data) break; \ user->hciemu_type = HCIEMU_TYPE_LE; \ user->io_id = 0; \ + user->err_io_id = 0; \ user->test_data = data; \ tester_add_full(name, data, \ test_pre_setup, setup, func, NULL, \ @@ -321,6 +337,17 @@ static const struct l2cap_data client_connect_write_success_test = { .data_len = sizeof(l2_data), }; +static const struct l2cap_data client_connect_tx_timestamping_test = { + .client_psm = 0x1001, + .server_psm = 0x1001, + .write_data = l2_data, + .data_len = sizeof(l2_data), + .so_timestamping = (SOF_TIMESTAMPING_SOFTWARE | + SOF_TIMESTAMPING_OPT_ID | + SOF_TIMESTAMPING_TX_SOFTWARE), + .send_extra = 2, +}; + static const struct l2cap_data client_connect_shut_wr_success_test = { .client_psm = 0x1001, .server_psm = 0x1001, @@ -1096,6 +1123,8 @@ static void bthost_received_data(const void *buf, uint16_t len, struct test_data *data = tester_get_data(); const struct l2cap_data *l2data = data->test_data; + --data->step; + if (len != l2data->data_len) { tester_test_failed(); return; @@ -1103,7 +1132,7 @@ static void bthost_received_data(const void *buf, uint16_t len, if (memcmp(buf, l2data->write_data, l2data->data_len)) tester_test_failed(); - else + else if (!data->step) tester_test_passed(); } @@ -1207,6 +1236,61 @@ static bool check_mtu(struct test_data *data, int sk) return true; } +static gboolean recv_errqueue(GIOChannel *io, GIOCondition cond, + gpointer user_data) +{ + struct test_data *data = user_data; + const struct l2cap_data *l2data = data->test_data; + int sk = g_io_channel_unix_get_fd(io); + int err; + + data->step--; + + err = tx_tstamp_recv(&data->tx_ts, sk, l2data->data_len); + if (err > 0) + return TRUE; + else if (!err && !data->step) + tester_test_passed(); + else + tester_test_failed(); + + data->err_io_id = 0; + return FALSE; +} + +static void l2cap_tx_timestamping(struct test_data *data, GIOChannel *io) +{ + const struct l2cap_data *l2data = data->test_data; + struct so_timestamping so = { + .flags = l2data->so_timestamping, + }; + int sk; + int err; + unsigned int count; + + if (!(l2data->so_timestamping & SOF_TIMESTAMPING_TX_RECORD_MASK)) + return; + + sk = g_io_channel_unix_get_fd(io); + + tester_print("Enabling TX timestamping"); + + tx_tstamp_init(&data->tx_ts, l2data->so_timestamping); + + for (count = 0; count < l2data->send_extra + 1; ++count) + data->step += tx_tstamp_expect(&data->tx_ts); + + err = setsockopt(sk, SOL_SOCKET, SO_TIMESTAMPING, &so, sizeof(so)); + if (err < 0) { + tester_warn("setsockopt SO_TIMESTAMPING: %s (%d)", + strerror(errno), errno); + tester_test_failed(); + return; + } + + data->err_io_id = g_io_add_watch(io, G_IO_ERR, recv_errqueue, data); +} + static gboolean l2cap_connect_cb(GIOChannel *io, GIOCondition cond, gpointer user_data) { @@ -1249,15 +1333,23 @@ static gboolean l2cap_connect_cb(GIOChannel *io, GIOCondition cond, } else if (l2data->write_data) { struct bthost *bthost; ssize_t ret; + unsigned int count; + + data->step = 0; bthost = hciemu_client_get_host(data->hciemu); bthost_add_cid_hook(bthost, data->handle, data->dcid, bthost_received_data, NULL); - ret = write(sk, l2data->write_data, l2data->data_len); - if (ret != l2data->data_len) { - tester_warn("Unable to write all data"); - tester_test_failed(); + l2cap_tx_timestamping(data, io); + + for (count = 0; count < l2data->send_extra + 1; ++count) { + ret = write(sk, l2data->write_data, l2data->data_len); + if (ret != l2data->data_len) { + tester_warn("Unable to write all data"); + tester_test_failed(); + } + ++data->step; } return FALSE; @@ -2280,6 +2372,10 @@ int main(int argc, char *argv[]) &client_connect_write_success_test, setup_powered_client, test_connect); + test_l2cap_bredr("L2CAP BR/EDR Client - TX Timestamping", + &client_connect_tx_timestamping_test, + setup_powered_client, test_connect); + test_l2cap_bredr("L2CAP BR/EDR Client - Invalid PSM 1", &client_connect_nval_psm_test_1, setup_powered_client, test_connect); -- 2.44.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH BlueZ 0/3] tests: add TX timestamping tests 2024-03-02 20:09 [PATCH BlueZ 0/3] tests: add TX timestamping tests Pauli Virtanen ` (2 preceding siblings ...) 2024-03-02 20:09 ` [PATCH BlueZ 3/3] l2cap-tester: Add test " Pauli Virtanen @ 2024-03-04 14:43 ` Luiz Augusto von Dentz 3 siblings, 0 replies; 13+ messages in thread From: Luiz Augusto von Dentz @ 2024-03-04 14:43 UTC (permalink / raw) To: Pauli Virtanen; +Cc: linux-bluetooth Hi Pauli, On Sat, Mar 2, 2024 at 3:10 PM Pauli Virtanen <pav@iki.fi> wrote: > > Add tests for ISO and L2CAP TX timestamping > > Pauli Virtanen (3): > lib: add BT_SCM_ERROR sock_extended_err CMSG > iso-tester: Add tests for TX timestamping > l2cap-tester: Add test for TX timestamping Same thing as for missing SCO_LINK handing in the kernel, we probably want to do the same for sco-tester. > lib/bluetooth.h | 1 + > tools/iso-tester.c | 169 ++++++++++++++++++++++++++++++++++++++++--- > tools/l2cap-tester.c | 106 +++++++++++++++++++++++++-- > tools/tester-utils.h | 163 +++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 424 insertions(+), 15 deletions(-) > create mode 100644 tools/tester-utils.h > > -- > 2.44.0 > > -- Luiz Augusto von Dentz ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH BlueZ v2 1/9] lib: add BT_SCM_ERROR and BT_NO_ERRQUEUE_POLL @ 2024-03-14 18:21 Pauli Virtanen 2024-03-14 19:20 ` tests: add TX timestamping tests bluez.test.bot 0 siblings, 1 reply; 13+ messages in thread From: Pauli Virtanen @ 2024-03-14 18:21 UTC (permalink / raw) To: linux-bluetooth; +Cc: Pauli Virtanen Add new CMSG type used in new kernel TX timestamping support. Add new socket option. --- lib/bluetooth.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/bluetooth.h b/lib/bluetooth.h index 75dc960c8..7c310a69b 100644 --- a/lib/bluetooth.h +++ b/lib/bluetooth.h @@ -141,6 +141,7 @@ struct bt_voice { #define BT_PKT_STATUS 16 #define BT_SCM_PKT_STATUS 0x03 +#define BT_SCM_ERROR 0x04 #define BT_ISO_QOS 17 @@ -239,6 +240,8 @@ enum { #define BT_ISO_BASE 20 +#define BT_NO_ERRQUEUE_POLL 21 + /* Byte order conversions */ #if __BYTE_ORDER == __LITTLE_ENDIAN #define htobs(d) (d) -- 2.44.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* RE: tests: add TX timestamping tests 2024-03-14 18:21 [PATCH BlueZ v2 1/9] lib: add BT_SCM_ERROR and BT_NO_ERRQUEUE_POLL Pauli Virtanen @ 2024-03-14 19:20 ` bluez.test.bot 0 siblings, 0 replies; 13+ messages in thread From: bluez.test.bot @ 2024-03-14 19:20 UTC (permalink / raw) To: linux-bluetooth, pav [-- Attachment #1: Type: text/plain, Size: 24921 bytes --] This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=835395 ---Test result--- Test Summary: CheckPatch FAIL 4.81 seconds GitLint PASS 2.84 seconds BuildEll PASS 24.06 seconds BluezMake FAIL 50.30 seconds MakeCheck FAIL 150.39 seconds MakeDistcheck PASS 175.67 seconds CheckValgrind FAIL 42.50 seconds CheckSmatch FAIL 95.94 seconds bluezmakeextell FAIL 24.85 seconds IncrementalBuild FAIL 1475.06 seconds ScanBuild FAIL 589.13 seconds Details ############################## Test: CheckPatch - FAIL Desc: Run checkpatch.pl script Output: [BlueZ,v2,6/9] shared/tester: run test with given name ERROR:INITIALISED_STATIC: do not initialise statics to NULL #108: FILE: src/shared/tester.c:115: +static const char *option_name = NULL; /github/workspace/src/src/13592656.patch total: 1 errors, 0 warnings, 27 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/src/13592656.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. ############################## Test: BluezMake - FAIL Desc: Build BlueZ Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:4649: all] Error 2 ############################## Test: MakeCheck - FAIL Desc: Run Bluez Make Check Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make: *** [Makefile:12184: check] Error 2 ############################## Test: CheckValgrind - FAIL Desc: Run Bluez Make Check with Valgrind Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:12184: check] Error 2 ############################## Test: CheckSmatch - FAIL Desc: Run smatch tool with source Output: src/shared/crypto.c:271:21: warning: Variable length array is used. src/shared/crypto.c:272:23: warning: Variable length array is used. src/shared/gatt-helpers.c:768:31: warning: Variable length array is used. src/shared/gatt-helpers.c:830:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1323:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1354:23: warning: Variable length array is used. src/shared/gatt-server.c:278:25: warning: Variable length array is used. src/shared/gatt-server.c:621:25: warning: Variable length array is used. src/shared/gatt-server.c:720:25: warning: Variable length array is used. src/shared/bap.c:282:25: warning: array of flexible structures src/shared/bap.c: note: in included file: ./src/shared/ascs.h:88:25: warning: array of flexible structures src/shared/shell.c: note: in included file (through /usr/include/readline/readline.h): /usr/include/readline/rltypedefs.h:35:23: warning: non-ANSI function declaration of function 'Function' /usr/include/readline/rltypedefs.h:36:25: warning: non-ANSI function declaration of function 'VFunction' /usr/include/readline/rltypedefs.h:37:27: warning: non-ANSI function declaration of function 'CPFunction' /usr/include/readline/rltypedefs.h:38:29: warning: non-ANSI function declaration of function 'CPPFunction' src/shared/crypto.c:271:21: warning: Variable length array is used. src/shared/crypto.c:272:23: warning: Variable length array is used. src/shared/gatt-helpers.c:768:31: warning: Variable length array is used. src/shared/gatt-helpers.c:830:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1323:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1354:23: warning: Variable length array is used. src/shared/gatt-server.c:278:25: warning: Variable length array is used. src/shared/gatt-server.c:621:25: warning: Variable length array is used. src/shared/gatt-server.c:720:25: warning: Variable length array is used. src/shared/bap.c:282:25: warning: array of flexible structures src/shared/bap.c: note: in included file: ./src/shared/ascs.h:88:25: warning: array of flexible structures src/shared/shell.c: note: in included file (through /usr/include/readline/readline.h): /usr/include/readline/rltypedefs.h:35:23: warning: non-ANSI function declaration of function 'Function' /usr/include/readline/rltypedefs.h:36:25: warning: non-ANSI function declaration of function 'VFunction' /usr/include/readline/rltypedefs.h:37:27: warning: non-ANSI function declaration of function 'CPFunction' /usr/include/readline/rltypedefs.h:38:29: warning: non-ANSI function declaration of function 'CPPFunction' tools/mesh-cfgtest.c:1453:17: warning: unknown escape sequence: '\%' tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 ############################## Test: bluezmakeextell - FAIL Desc: Build Bluez with External ELL Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 ############################## Test: IncrementalBuild - FAIL Desc: Incremental build with the patches in the series Output: [BlueZ,v2,2/9] iso-tester: Add tests for TX timestamping tools/iso-tester.c: In function ‘iso_tx_timestamping’: tools/iso-tester.c:2128:9: error: variable ‘so’ has initializer but incomplete type 2128 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/iso-tester.c:2129:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 2129 | .flags = isodata->so_timestamping, | ^~~~~ tools/iso-tester.c:2129:12: error: excess elements in struct initializer [-Werror] 2129 | .flags = isodata->so_timestamping, | ^~~~~~~ tools/iso-tester.c:2129:12: note: (near initialization for ‘so’) tools/iso-tester.c:2128:25: error: storage size of ‘so’ isn’t known 2128 | struct so_timestamping so = { | ^~ tools/iso-tester.c:2128:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/iso-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:4649: all] Error 2 ############################## Test: ScanBuild - FAIL Desc: Run Scan Build Output: src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed gatt_db_unregister(op->client->db, op->db_id); ^~~~~~~~~~ src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed discovery_op_complete(op, false, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed discover_all(op); ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed discovery_op_ref(op), ^~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed complete_write_long_op(req, success, 0, false); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed request_unref(req); ^~~~~~~~~~~~~~~~~~ 12 warnings generated. src/shared/shell.c:1243:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt') if (c != opt->options[index - offset].val) { ^~~~~~~~~~~~ 1 warning generated. src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed gatt_db_unregister(op->client->db, op->db_id); ^~~~~~~~~~ src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed discovery_op_complete(op, false, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed discover_all(op); ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed discovery_op_ref(op), ^~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed complete_write_long_op(req, success, 0, false); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed request_unref(req); ^~~~~~~~~~~~~~~~~~ 12 warnings generated. src/shared/shell.c:1243:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt') if (c != opt->options[index - offset].val) { ^~~~~~~~~~~~ 1 warning generated. tools/hciattach.c:816:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 10)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:864:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:886:8: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 10)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:908:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:929:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:973:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 6)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 warnings generated. src/oui.c:50:2: warning: Value stored to 'hwdb' is never read hwdb = udev_hwdb_unref(hwdb); ^ ~~~~~~~~~~~~~~~~~~~~~ src/oui.c:53:2: warning: Value stored to 'udev' is never read udev = udev_unref(udev); ^ ~~~~~~~~~~~~~~~~ 2 warnings generated. tools/hcidump.c:180:9: warning: Potential leak of memory pointed to by 'dp' if (fds[i].fd == sock) ^~~ tools/hcidump.c:248:17: warning: Assigned value is garbage or undefined dh->ts_sec = htobl(frm.ts.tv_sec); ^ ~~~~~~~~~~~~~~~~~~~~ tools/hcidump.c:326:9: warning: 1st function call argument is an uninitialized value if (be32toh(dp.flags) & 0x02) { ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:341:20: warning: 1st function call argument is an uninitialized value frm.data_len = be32toh(dp.len); ^~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:346:14: warning: 1st function call argument is an uninitialized value opcode = be32toh(dp.flags) & 0xffff; ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:384:17: warning: Assigned value is garbage or undefined frm.data_len = btohs(dh.len); ^ ~~~~~~~~~~~~~ tools/hcidump.c:394:11: warning: Assigned value is garbage or undefined frm.len = frm.data_len; ^ ~~~~~~~~~~~~ tools/hcidump.c:398:9: warning: 1st function call argument is an uninitialized value ts = be64toh(ph.ts); ^~~~~~~~~~~~~~ /usr/include/endian.h:51:22: note: expanded from macro 'be64toh' # define be64toh(x) __bswap_64 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:403:13: warning: 1st function call argument is an uninitialized value frm.in = be32toh(dp.flags) & 0x01; ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:408:11: warning: Assigned value is garbage or undefined frm.in = dh.in; ^ ~~~~~ tools/hcidump.c:437:7: warning: Null pointer passed to 1st parameter expecting 'nonnull' fd = open(file, open_flags, 0644); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11 warnings generated. tools/rfcomm.c:234:3: warning: Value stored to 'i' is never read i = execvp(cmdargv[0], cmdargv); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:234:7: warning: Null pointer passed to 1st parameter expecting 'nonnull' i = execvp(cmdargv[0], cmdargv); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:354:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd' if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:497:14: warning: Assigned value is garbage or undefined req.channel = raddr.rc_channel; ^ ~~~~~~~~~~~~~~~~ tools/rfcomm.c:515:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd' if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 warnings generated. src/sdp-xml.c:126:10: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ src/sdp-xml.c:300:11: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ src/sdp-xml.c:338:11: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ 3 warnings generated. tools/ciptool.c:350:7: warning: 5th function call argument is an uninitialized value sk = do_connect(ctl, dev_id, &src, &dst, psm, (1 << CMTP_LOOPBACK)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. tools/sdptool.c:941:26: warning: Result of 'malloc' is converted to a pointer of type 'uint32_t', which is incompatible with sizeof operand type 'int' uint32_t *value_int = malloc(sizeof(int)); ~~~~~~~~~~ ^~~~~~ ~~~~~~~~~~~ tools/sdptool.c:980:4: warning: 1st function call argument is an uninitialized value free(allocArray[i]); ^~~~~~~~~~~~~~~~~~~ tools/sdptool.c:3777:2: warning: Potential leak of memory pointed to by 'si.name' return add_service(0, &si); ^~~~~~~~~~~~~~~~~~~~~~~~~~ tools/sdptool.c:4112:4: warning: Potential leak of memory pointed to by 'context.svc' return -1; ^~~~~~~~~ 4 warnings generated. tools/iso-tester.c: In function ‘iso_tx_timestamping’: tools/iso-tester.c:2128:9: error: variable ‘so’ has initializer but incomplete type 2128 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/iso-tester.c:2129:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 2129 | .flags = isodata->so_timestamping, | ^~~~~ tools/iso-tester.c:2129:12: error: excess elements in struct initializer [-Werror] 2129 | .flags = isodata->so_timestamping, | ^~~~~~~ tools/iso-tester.c:2129:12: note: (near initialization for ‘so’) tools/iso-tester.c:2128:25: error: storage size of ‘so’ isn’t known 2128 | struct so_timestamping so = { | ^~ tools/iso-tester.c:2128:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/iso-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 --- Regards, Linux Bluetooth ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH BlueZ v3 1/8] lib: add BT_SCM_ERROR and BT_NO_ERRQUEUE_POLL @ 2024-04-02 16:42 Pauli Virtanen 2024-04-02 17:59 ` tests: add TX timestamping tests bluez.test.bot 0 siblings, 1 reply; 13+ messages in thread From: Pauli Virtanen @ 2024-04-02 16:42 UTC (permalink / raw) To: linux-bluetooth; +Cc: Pauli Virtanen Add new CMSG type used in new kernel TX timestamping support. Add new socket option. --- lib/bluetooth.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/bluetooth.h b/lib/bluetooth.h index 75dc960c8..7c310a69b 100644 --- a/lib/bluetooth.h +++ b/lib/bluetooth.h @@ -141,6 +141,7 @@ struct bt_voice { #define BT_PKT_STATUS 16 #define BT_SCM_PKT_STATUS 0x03 +#define BT_SCM_ERROR 0x04 #define BT_ISO_QOS 17 @@ -239,6 +240,8 @@ enum { #define BT_ISO_BASE 20 +#define BT_NO_ERRQUEUE_POLL 21 + /* Byte order conversions */ #if __BYTE_ORDER == __LITTLE_ENDIAN #define htobs(d) (d) -- 2.44.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* RE: tests: add TX timestamping tests 2024-04-02 16:42 [PATCH BlueZ v3 1/8] lib: add BT_SCM_ERROR and BT_NO_ERRQUEUE_POLL Pauli Virtanen @ 2024-04-02 17:59 ` bluez.test.bot 0 siblings, 0 replies; 13+ messages in thread From: bluez.test.bot @ 2024-04-02 17:59 UTC (permalink / raw) To: linux-bluetooth, pav [-- Attachment #1: Type: text/plain, Size: 24031 bytes --] This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=840718 ---Test result--- Test Summary: CheckPatch PASS 4.29 seconds GitLint PASS 2.30 seconds BuildEll PASS 24.60 seconds BluezMake FAIL 50.41 seconds MakeCheck FAIL 147.79 seconds MakeDistcheck PASS 176.60 seconds CheckValgrind FAIL 43.03 seconds CheckSmatch FAIL 96.04 seconds bluezmakeextell FAIL 24.69 seconds IncrementalBuild FAIL 1493.28 seconds ScanBuild FAIL 583.88 seconds Details ############################## Test: BluezMake - FAIL Desc: Build BlueZ Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:4649: all] Error 2 ############################## Test: MakeCheck - FAIL Desc: Run Bluez Make Check Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make: *** [Makefile:12184: check] Error 2 ############################## Test: CheckValgrind - FAIL Desc: Run Bluez Make Check with Valgrind Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:12184: check] Error 2 ############################## Test: CheckSmatch - FAIL Desc: Run smatch tool with source Output: src/shared/crypto.c:271:21: warning: Variable length array is used. src/shared/crypto.c:272:23: warning: Variable length array is used. src/shared/gatt-helpers.c:768:31: warning: Variable length array is used. src/shared/gatt-helpers.c:830:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1323:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1354:23: warning: Variable length array is used. src/shared/gatt-server.c:278:25: warning: Variable length array is used. src/shared/gatt-server.c:621:25: warning: Variable length array is used. src/shared/gatt-server.c:720:25: warning: Variable length array is used. src/shared/bap.c:282:25: warning: array of flexible structures src/shared/bap.c: note: in included file: ./src/shared/ascs.h:88:25: warning: array of flexible structures src/shared/shell.c: note: in included file (through /usr/include/readline/readline.h): /usr/include/readline/rltypedefs.h:35:23: warning: non-ANSI function declaration of function 'Function' /usr/include/readline/rltypedefs.h:36:25: warning: non-ANSI function declaration of function 'VFunction' /usr/include/readline/rltypedefs.h:37:27: warning: non-ANSI function declaration of function 'CPFunction' /usr/include/readline/rltypedefs.h:38:29: warning: non-ANSI function declaration of function 'CPPFunction' src/shared/crypto.c:271:21: warning: Variable length array is used. src/shared/crypto.c:272:23: warning: Variable length array is used. src/shared/gatt-helpers.c:768:31: warning: Variable length array is used. src/shared/gatt-helpers.c:830:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1323:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1354:23: warning: Variable length array is used. src/shared/gatt-server.c:278:25: warning: Variable length array is used. src/shared/gatt-server.c:621:25: warning: Variable length array is used. src/shared/gatt-server.c:720:25: warning: Variable length array is used. src/shared/bap.c:282:25: warning: array of flexible structures src/shared/bap.c: note: in included file: ./src/shared/ascs.h:88:25: warning: array of flexible structures src/shared/shell.c: note: in included file (through /usr/include/readline/readline.h): /usr/include/readline/rltypedefs.h:35:23: warning: non-ANSI function declaration of function 'Function' /usr/include/readline/rltypedefs.h:36:25: warning: non-ANSI function declaration of function 'VFunction' /usr/include/readline/rltypedefs.h:37:27: warning: non-ANSI function declaration of function 'CPFunction' /usr/include/readline/rltypedefs.h:38:29: warning: non-ANSI function declaration of function 'CPPFunction' tools/mesh-cfgtest.c:1453:17: warning: unknown escape sequence: '\%' tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 ############################## Test: bluezmakeextell - FAIL Desc: Build Bluez with External ELL Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 ############################## Test: IncrementalBuild - FAIL Desc: Incremental build with the patches in the series Output: [BlueZ,v3,2/8] iso-tester: Add tests for TX timestamping tools/iso-tester.c: In function ‘iso_tx_timestamping’: tools/iso-tester.c:2130:9: error: variable ‘so’ has initializer but incomplete type 2130 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/iso-tester.c:2131:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 2131 | .flags = isodata->so_timestamping, | ^~~~~ tools/iso-tester.c:2131:12: error: excess elements in struct initializer [-Werror] 2131 | .flags = isodata->so_timestamping, | ^~~~~~~ tools/iso-tester.c:2131:12: note: (near initialization for ‘so’) tools/iso-tester.c:2130:25: error: storage size of ‘so’ isn’t known 2130 | struct so_timestamping so = { | ^~ tools/iso-tester.c:2130:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/iso-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:4649: all] Error 2 ############################## Test: ScanBuild - FAIL Desc: Run Scan Build Output: src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed gatt_db_unregister(op->client->db, op->db_id); ^~~~~~~~~~ src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed discovery_op_complete(op, false, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed discover_all(op); ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed discovery_op_ref(op), ^~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed complete_write_long_op(req, success, 0, false); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed request_unref(req); ^~~~~~~~~~~~~~~~~~ 12 warnings generated. src/shared/shell.c:1331:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt') if (c != opt->options[index - offset].val) { ^~~~~~~~~~~~ 1 warning generated. src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed gatt_db_unregister(op->client->db, op->db_id); ^~~~~~~~~~ src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed discovery_op_complete(op, false, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed discover_all(op); ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed discovery_op_ref(op), ^~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed complete_write_long_op(req, success, 0, false); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed request_unref(req); ^~~~~~~~~~~~~~~~~~ 12 warnings generated. src/shared/shell.c:1331:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt') if (c != opt->options[index - offset].val) { ^~~~~~~~~~~~ 1 warning generated. tools/hciattach.c:816:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 10)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:864:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:886:8: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 10)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:908:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:929:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:973:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 6)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 warnings generated. src/oui.c:50:2: warning: Value stored to 'hwdb' is never read hwdb = udev_hwdb_unref(hwdb); ^ ~~~~~~~~~~~~~~~~~~~~~ src/oui.c:53:2: warning: Value stored to 'udev' is never read udev = udev_unref(udev); ^ ~~~~~~~~~~~~~~~~ 2 warnings generated. tools/hcidump.c:180:9: warning: Potential leak of memory pointed to by 'dp' if (fds[i].fd == sock) ^~~ tools/hcidump.c:248:17: warning: Assigned value is garbage or undefined dh->ts_sec = htobl(frm.ts.tv_sec); ^ ~~~~~~~~~~~~~~~~~~~~ tools/hcidump.c:326:9: warning: 1st function call argument is an uninitialized value if (be32toh(dp.flags) & 0x02) { ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:341:20: warning: 1st function call argument is an uninitialized value frm.data_len = be32toh(dp.len); ^~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:346:14: warning: 1st function call argument is an uninitialized value opcode = be32toh(dp.flags) & 0xffff; ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:384:17: warning: Assigned value is garbage or undefined frm.data_len = btohs(dh.len); ^ ~~~~~~~~~~~~~ tools/hcidump.c:394:11: warning: Assigned value is garbage or undefined frm.len = frm.data_len; ^ ~~~~~~~~~~~~ tools/hcidump.c:398:9: warning: 1st function call argument is an uninitialized value ts = be64toh(ph.ts); ^~~~~~~~~~~~~~ /usr/include/endian.h:51:22: note: expanded from macro 'be64toh' # define be64toh(x) __bswap_64 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:403:13: warning: 1st function call argument is an uninitialized value frm.in = be32toh(dp.flags) & 0x01; ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:408:11: warning: Assigned value is garbage or undefined frm.in = dh.in; ^ ~~~~~ tools/hcidump.c:437:7: warning: Null pointer passed to 1st parameter expecting 'nonnull' fd = open(file, open_flags, 0644); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11 warnings generated. tools/rfcomm.c:234:3: warning: Value stored to 'i' is never read i = execvp(cmdargv[0], cmdargv); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:234:7: warning: Null pointer passed to 1st parameter expecting 'nonnull' i = execvp(cmdargv[0], cmdargv); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:354:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd' if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:497:14: warning: Assigned value is garbage or undefined req.channel = raddr.rc_channel; ^ ~~~~~~~~~~~~~~~~ tools/rfcomm.c:515:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd' if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 warnings generated. src/sdp-xml.c:126:10: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ src/sdp-xml.c:300:11: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ src/sdp-xml.c:338:11: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ 3 warnings generated. tools/ciptool.c:350:7: warning: 5th function call argument is an uninitialized value sk = do_connect(ctl, dev_id, &src, &dst, psm, (1 << CMTP_LOOPBACK)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. tools/sdptool.c:941:26: warning: Result of 'malloc' is converted to a pointer of type 'uint32_t', which is incompatible with sizeof operand type 'int' uint32_t *value_int = malloc(sizeof(int)); ~~~~~~~~~~ ^~~~~~ ~~~~~~~~~~~ tools/sdptool.c:980:4: warning: 1st function call argument is an uninitialized value free(allocArray[i]); ^~~~~~~~~~~~~~~~~~~ tools/sdptool.c:3777:2: warning: Potential leak of memory pointed to by 'si.name' return add_service(0, &si); ^~~~~~~~~~~~~~~~~~~~~~~~~~ tools/sdptool.c:4112:4: warning: Potential leak of memory pointed to by 'context.svc' return -1; ^~~~~~~~~ 4 warnings generated. tools/iso-tester.c: In function ‘iso_tx_timestamping’: tools/iso-tester.c:2130:9: error: variable ‘so’ has initializer but incomplete type 2130 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/iso-tester.c:2131:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 2131 | .flags = isodata->so_timestamping, | ^~~~~ tools/iso-tester.c:2131:12: error: excess elements in struct initializer [-Werror] 2131 | .flags = isodata->so_timestamping, | ^~~~~~~ tools/iso-tester.c:2131:12: note: (near initialization for ‘so’) tools/iso-tester.c:2130:25: error: storage size of ‘so’ isn’t known 2130 | struct so_timestamping so = { | ^~ tools/iso-tester.c:2130:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/iso-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 --- Regards, Linux Bluetooth ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH BlueZ v4 1/7] lib: add BT_SCM_ERROR @ 2024-04-02 18:49 Pauli Virtanen 2024-04-02 19:56 ` tests: add TX timestamping tests bluez.test.bot 0 siblings, 1 reply; 13+ messages in thread From: Pauli Virtanen @ 2024-04-02 18:49 UTC (permalink / raw) To: linux-bluetooth; +Cc: Pauli Virtanen Add new CMSG type used in new kernel TX timestamping support. --- lib/bluetooth.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/bluetooth.h b/lib/bluetooth.h index 75dc960c8..a4ed65d0b 100644 --- a/lib/bluetooth.h +++ b/lib/bluetooth.h @@ -141,6 +141,7 @@ struct bt_voice { #define BT_PKT_STATUS 16 #define BT_SCM_PKT_STATUS 0x03 +#define BT_SCM_ERROR 0x04 #define BT_ISO_QOS 17 -- 2.44.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* RE: tests: add TX timestamping tests 2024-04-02 18:49 [PATCH BlueZ v4 1/7] lib: add BT_SCM_ERROR Pauli Virtanen @ 2024-04-02 19:56 ` bluez.test.bot 0 siblings, 0 replies; 13+ messages in thread From: bluez.test.bot @ 2024-04-02 19:56 UTC (permalink / raw) To: linux-bluetooth, pav [-- Attachment #1: Type: text/plain, Size: 24031 bytes --] This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=840742 ---Test result--- Test Summary: CheckPatch PASS 3.53 seconds GitLint PASS 2.04 seconds BuildEll PASS 24.43 seconds BluezMake FAIL 50.14 seconds MakeCheck FAIL 147.46 seconds MakeDistcheck PASS 176.28 seconds CheckValgrind FAIL 42.89 seconds CheckSmatch FAIL 95.38 seconds bluezmakeextell FAIL 24.54 seconds IncrementalBuild FAIL 1548.85 seconds ScanBuild FAIL 583.91 seconds Details ############################## Test: BluezMake - FAIL Desc: Build BlueZ Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:4649: all] Error 2 ############################## Test: MakeCheck - FAIL Desc: Run Bluez Make Check Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make: *** [Makefile:12184: check] Error 2 ############################## Test: CheckValgrind - FAIL Desc: Run Bluez Make Check with Valgrind Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:12184: check] Error 2 ############################## Test: CheckSmatch - FAIL Desc: Run smatch tool with source Output: src/shared/crypto.c:271:21: warning: Variable length array is used. src/shared/crypto.c:272:23: warning: Variable length array is used. src/shared/gatt-helpers.c:768:31: warning: Variable length array is used. src/shared/gatt-helpers.c:830:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1323:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1354:23: warning: Variable length array is used. src/shared/gatt-server.c:278:25: warning: Variable length array is used. src/shared/gatt-server.c:621:25: warning: Variable length array is used. src/shared/gatt-server.c:720:25: warning: Variable length array is used. src/shared/bap.c:282:25: warning: array of flexible structures src/shared/bap.c: note: in included file: ./src/shared/ascs.h:88:25: warning: array of flexible structures src/shared/shell.c: note: in included file (through /usr/include/readline/readline.h): /usr/include/readline/rltypedefs.h:35:23: warning: non-ANSI function declaration of function 'Function' /usr/include/readline/rltypedefs.h:36:25: warning: non-ANSI function declaration of function 'VFunction' /usr/include/readline/rltypedefs.h:37:27: warning: non-ANSI function declaration of function 'CPFunction' /usr/include/readline/rltypedefs.h:38:29: warning: non-ANSI function declaration of function 'CPPFunction' src/shared/crypto.c:271:21: warning: Variable length array is used. src/shared/crypto.c:272:23: warning: Variable length array is used. src/shared/gatt-helpers.c:768:31: warning: Variable length array is used. src/shared/gatt-helpers.c:830:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1323:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1354:23: warning: Variable length array is used. src/shared/gatt-server.c:278:25: warning: Variable length array is used. src/shared/gatt-server.c:621:25: warning: Variable length array is used. src/shared/gatt-server.c:720:25: warning: Variable length array is used. src/shared/bap.c:282:25: warning: array of flexible structures src/shared/bap.c: note: in included file: ./src/shared/ascs.h:88:25: warning: array of flexible structures src/shared/shell.c: note: in included file (through /usr/include/readline/readline.h): /usr/include/readline/rltypedefs.h:35:23: warning: non-ANSI function declaration of function 'Function' /usr/include/readline/rltypedefs.h:36:25: warning: non-ANSI function declaration of function 'VFunction' /usr/include/readline/rltypedefs.h:37:27: warning: non-ANSI function declaration of function 'CPFunction' /usr/include/readline/rltypedefs.h:38:29: warning: non-ANSI function declaration of function 'CPPFunction' tools/mesh-cfgtest.c:1453:17: warning: unknown escape sequence: '\%' tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 ############################## Test: bluezmakeextell - FAIL Desc: Build Bluez with External ELL Output: tools/l2cap-tester.c: In function ‘l2cap_tx_timestamping’: tools/l2cap-tester.c:1292:9: error: variable ‘so’ has initializer but incomplete type 1292 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/l2cap-tester.c:1293:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 1293 | .flags = l2data->so_timestamping, | ^~~~~ tools/l2cap-tester.c:1293:12: error: excess elements in struct initializer [-Werror] 1293 | .flags = l2data->so_timestamping, | ^~~~~~ tools/l2cap-tester.c:1293:12: note: (near initialization for ‘so’) tools/l2cap-tester.c:1292:25: error: storage size of ‘so’ isn’t known 1292 | struct so_timestamping so = { | ^~ tools/l2cap-tester.c:1292:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/l2cap-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 ############################## Test: IncrementalBuild - FAIL Desc: Incremental build with the patches in the series Output: [BlueZ,v4,2/7] iso-tester: Add tests for TX timestamping tools/iso-tester.c: In function ‘iso_tx_timestamping’: tools/iso-tester.c:2130:9: error: variable ‘so’ has initializer but incomplete type 2130 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/iso-tester.c:2131:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 2131 | .flags = isodata->so_timestamping, | ^~~~~ tools/iso-tester.c:2131:12: error: excess elements in struct initializer [-Werror] 2131 | .flags = isodata->so_timestamping, | ^~~~~~~ tools/iso-tester.c:2131:12: note: (near initialization for ‘so’) tools/iso-tester.c:2130:25: error: storage size of ‘so’ isn’t known 2130 | struct so_timestamping so = { | ^~ tools/iso-tester.c:2130:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/iso-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:4649: all] Error 2 ############################## Test: ScanBuild - FAIL Desc: Run Scan Build Output: src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed gatt_db_unregister(op->client->db, op->db_id); ^~~~~~~~~~ src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed discovery_op_complete(op, false, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed discover_all(op); ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed discovery_op_ref(op), ^~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed complete_write_long_op(req, success, 0, false); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed request_unref(req); ^~~~~~~~~~~~~~~~~~ 12 warnings generated. src/shared/shell.c:1331:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt') if (c != opt->options[index - offset].val) { ^~~~~~~~~~~~ 1 warning generated. src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed gatt_db_unregister(op->client->db, op->db_id); ^~~~~~~~~~ src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed discovery_op_complete(op, false, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed discover_all(op); ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed discovery_op_ref(op), ^~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed complete_write_long_op(req, success, 0, false); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed request_unref(req); ^~~~~~~~~~~~~~~~~~ 12 warnings generated. src/shared/shell.c:1331:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt') if (c != opt->options[index - offset].val) { ^~~~~~~~~~~~ 1 warning generated. tools/hciattach.c:816:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 10)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:864:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:886:8: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 10)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:908:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:929:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:973:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 6)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 warnings generated. src/oui.c:50:2: warning: Value stored to 'hwdb' is never read hwdb = udev_hwdb_unref(hwdb); ^ ~~~~~~~~~~~~~~~~~~~~~ src/oui.c:53:2: warning: Value stored to 'udev' is never read udev = udev_unref(udev); ^ ~~~~~~~~~~~~~~~~ 2 warnings generated. tools/hcidump.c:180:9: warning: Potential leak of memory pointed to by 'dp' if (fds[i].fd == sock) ^~~ tools/hcidump.c:248:17: warning: Assigned value is garbage or undefined dh->ts_sec = htobl(frm.ts.tv_sec); ^ ~~~~~~~~~~~~~~~~~~~~ tools/hcidump.c:326:9: warning: 1st function call argument is an uninitialized value if (be32toh(dp.flags) & 0x02) { ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:341:20: warning: 1st function call argument is an uninitialized value frm.data_len = be32toh(dp.len); ^~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:346:14: warning: 1st function call argument is an uninitialized value opcode = be32toh(dp.flags) & 0xffff; ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:384:17: warning: Assigned value is garbage or undefined frm.data_len = btohs(dh.len); ^ ~~~~~~~~~~~~~ tools/hcidump.c:394:11: warning: Assigned value is garbage or undefined frm.len = frm.data_len; ^ ~~~~~~~~~~~~ tools/hcidump.c:398:9: warning: 1st function call argument is an uninitialized value ts = be64toh(ph.ts); ^~~~~~~~~~~~~~ /usr/include/endian.h:51:22: note: expanded from macro 'be64toh' # define be64toh(x) __bswap_64 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:403:13: warning: 1st function call argument is an uninitialized value frm.in = be32toh(dp.flags) & 0x01; ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:408:11: warning: Assigned value is garbage or undefined frm.in = dh.in; ^ ~~~~~ tools/hcidump.c:437:7: warning: Null pointer passed to 1st parameter expecting 'nonnull' fd = open(file, open_flags, 0644); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11 warnings generated. tools/rfcomm.c:234:3: warning: Value stored to 'i' is never read i = execvp(cmdargv[0], cmdargv); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:234:7: warning: Null pointer passed to 1st parameter expecting 'nonnull' i = execvp(cmdargv[0], cmdargv); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:354:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd' if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:497:14: warning: Assigned value is garbage or undefined req.channel = raddr.rc_channel; ^ ~~~~~~~~~~~~~~~~ tools/rfcomm.c:515:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd' if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 warnings generated. src/sdp-xml.c:126:10: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ src/sdp-xml.c:300:11: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ src/sdp-xml.c:338:11: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ 3 warnings generated. tools/ciptool.c:350:7: warning: 5th function call argument is an uninitialized value sk = do_connect(ctl, dev_id, &src, &dst, psm, (1 << CMTP_LOOPBACK)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. tools/sdptool.c:941:26: warning: Result of 'malloc' is converted to a pointer of type 'uint32_t', which is incompatible with sizeof operand type 'int' uint32_t *value_int = malloc(sizeof(int)); ~~~~~~~~~~ ^~~~~~ ~~~~~~~~~~~ tools/sdptool.c:980:4: warning: 1st function call argument is an uninitialized value free(allocArray[i]); ^~~~~~~~~~~~~~~~~~~ tools/sdptool.c:3777:2: warning: Potential leak of memory pointed to by 'si.name' return add_service(0, &si); ^~~~~~~~~~~~~~~~~~~~~~~~~~ tools/sdptool.c:4112:4: warning: Potential leak of memory pointed to by 'context.svc' return -1; ^~~~~~~~~ 4 warnings generated. tools/iso-tester.c: In function ‘iso_tx_timestamping’: tools/iso-tester.c:2130:9: error: variable ‘so’ has initializer but incomplete type 2130 | struct so_timestamping so = { | ^~~~~~~~~~~~~~~ tools/iso-tester.c:2131:4: error: ‘struct so_timestamping’ has no member named ‘flags’ 2131 | .flags = isodata->so_timestamping, | ^~~~~ tools/iso-tester.c:2131:12: error: excess elements in struct initializer [-Werror] 2131 | .flags = isodata->so_timestamping, | ^~~~~~~ tools/iso-tester.c:2131:12: note: (near initialization for ‘so’) tools/iso-tester.c:2130:25: error: storage size of ‘so’ isn’t known 2130 | struct so_timestamping so = { | ^~ tools/iso-tester.c:2130:25: error: unused variable ‘so’ [-Werror=unused-variable] cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/iso-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 --- Regards, Linux Bluetooth ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH BlueZ v5 1/7] lib: add BT_SCM_ERROR @ 2024-04-03 16:43 Pauli Virtanen 2024-04-03 17:11 ` tests: add TX timestamping tests bluez.test.bot 0 siblings, 1 reply; 13+ messages in thread From: Pauli Virtanen @ 2024-04-03 16:43 UTC (permalink / raw) To: linux-bluetooth; +Cc: Pauli Virtanen Add new CMSG type used in new kernel TX timestamping support. --- lib/bluetooth.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/bluetooth.h b/lib/bluetooth.h index 75dc960c8..a4ed65d0b 100644 --- a/lib/bluetooth.h +++ b/lib/bluetooth.h @@ -141,6 +141,7 @@ struct bt_voice { #define BT_PKT_STATUS 16 #define BT_SCM_PKT_STATUS 0x03 +#define BT_SCM_ERROR 0x04 #define BT_ISO_QOS 17 -- 2.44.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* RE: tests: add TX timestamping tests 2024-04-03 16:43 [PATCH BlueZ v5 1/7] lib: add BT_SCM_ERROR Pauli Virtanen @ 2024-04-03 17:11 ` bluez.test.bot 2024-04-03 17:14 ` Luiz Augusto von Dentz 0 siblings, 1 reply; 13+ messages in thread From: bluez.test.bot @ 2024-04-03 17:11 UTC (permalink / raw) To: linux-bluetooth, pav [-- Attachment #1: Type: text/plain, Size: 537 bytes --] This is an automated email and please do not reply to this email. Dear Submitter, Thank you for submitting the patches to the linux bluetooth mailing list. While preparing the CI tests, the patches you submitted couldn't be applied to the current HEAD of the repository. ----- Output ----- error: patch failed: tools/iso-tester.c:34 error: tools/iso-tester.c: patch does not apply hint: Use 'git am --show-current-patch' to see the failed patch Please resolve the issue and submit the patches again. --- Regards, Linux Bluetooth ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: tests: add TX timestamping tests 2024-04-03 17:11 ` tests: add TX timestamping tests bluez.test.bot @ 2024-04-03 17:14 ` Luiz Augusto von Dentz 0 siblings, 0 replies; 13+ messages in thread From: Luiz Augusto von Dentz @ 2024-04-03 17:14 UTC (permalink / raw) To: linux-bluetooth; +Cc: pav Hi Pauli, On Wed, Apr 3, 2024 at 1:11 PM <bluez.test.bot@gmail.com> wrote: > > This is an automated email and please do not reply to this email. > > Dear Submitter, > > Thank you for submitting the patches to the linux bluetooth mailing list. > While preparing the CI tests, the patches you submitted couldn't be applied to the current HEAD of the repository. > > ----- Output ----- > > error: patch failed: tools/iso-tester.c:34 > error: tools/iso-tester.c: patch does not apply > hint: Use 'git am --show-current-patch' to see the failed patch > > Please resolve the issue and submit the patches again. You probably need to rebase these changes, Ive pushed a couple of changes to iso-tester yesterday. -- Luiz Augusto von Dentz ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH BlueZ v6 1/7] lib: add BT_SCM_ERROR @ 2024-04-03 18:26 Pauli Virtanen 2024-04-03 20:48 ` tests: add TX timestamping tests bluez.test.bot 0 siblings, 1 reply; 13+ messages in thread From: Pauli Virtanen @ 2024-04-03 18:26 UTC (permalink / raw) To: linux-bluetooth; +Cc: Pauli Virtanen Add new CMSG type used in new kernel TX timestamping support. --- lib/bluetooth.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/bluetooth.h b/lib/bluetooth.h index 75dc960c8..a4ed65d0b 100644 --- a/lib/bluetooth.h +++ b/lib/bluetooth.h @@ -141,6 +141,7 @@ struct bt_voice { #define BT_PKT_STATUS 16 #define BT_SCM_PKT_STATUS 0x03 +#define BT_SCM_ERROR 0x04 #define BT_ISO_QOS 17 -- 2.44.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* RE: tests: add TX timestamping tests 2024-04-03 18:26 [PATCH BlueZ v6 1/7] lib: add BT_SCM_ERROR Pauli Virtanen @ 2024-04-03 20:48 ` bluez.test.bot 0 siblings, 0 replies; 13+ messages in thread From: bluez.test.bot @ 2024-04-03 20:48 UTC (permalink / raw) To: linux-bluetooth, pav [-- Attachment #1: Type: text/plain, Size: 20761 bytes --] This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=841193 ---Test result--- Test Summary: CheckPatch PASS 3.80 seconds GitLint PASS 2.15 seconds BuildEll PASS 24.97 seconds BluezMake FAIL 52.26 seconds MakeCheck FAIL 153.68 seconds MakeDistcheck PASS 180.87 seconds CheckValgrind FAIL 44.05 seconds CheckSmatch FAIL 97.34 seconds bluezmakeextell FAIL 25.06 seconds IncrementalBuild FAIL 6646.79 seconds ScanBuild FAIL 603.16 seconds Details ############################## Test: BluezMake - FAIL Desc: Build BlueZ Output: tools/sco-tester.c: In function ‘sco_connect_cb’: tools/sco-tester.c:713:4: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 713 | tester_warn("Failed to write %u bytes: %zu %s (%d)", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 714 | scodata->data_len, ret, strerror(errno), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 715 | errno); | ~~~~~~ cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/sco-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:4649: all] Error 2 ############################## Test: MakeCheck - FAIL Desc: Run Bluez Make Check Output: tools/sco-tester.c: In function ‘sco_connect_cb’: tools/sco-tester.c:713:4: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 713 | tester_warn("Failed to write %u bytes: %zu %s (%d)", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 714 | scodata->data_len, ret, strerror(errno), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 715 | errno); | ~~~~~~ cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/sco-tester.o] Error 1 make: *** [Makefile:12184: check] Error 2 ############################## Test: CheckValgrind - FAIL Desc: Run Bluez Make Check with Valgrind Output: tools/sco-tester.c: In function ‘sco_connect_cb’: tools/sco-tester.c:713:4: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 713 | tester_warn("Failed to write %u bytes: %zu %s (%d)", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 714 | scodata->data_len, ret, strerror(errno), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 715 | errno); | ~~~~~~ cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/sco-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:12184: check] Error 2 ############################## Test: CheckSmatch - FAIL Desc: Run smatch tool with source Output: src/shared/crypto.c:271:21: warning: Variable length array is used. src/shared/crypto.c:272:23: warning: Variable length array is used. src/shared/gatt-helpers.c:768:31: warning: Variable length array is used. src/shared/gatt-helpers.c:830:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1323:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1354:23: warning: Variable length array is used. src/shared/gatt-server.c:278:25: warning: Variable length array is used. src/shared/gatt-server.c:621:25: warning: Variable length array is used. src/shared/gatt-server.c:720:25: warning: Variable length array is used. src/shared/bap.c:282:25: warning: array of flexible structures src/shared/bap.c: note: in included file: ./src/shared/ascs.h:88:25: warning: array of flexible structures src/shared/shell.c: note: in included file (through /usr/include/readline/readline.h): /usr/include/readline/rltypedefs.h:35:23: warning: non-ANSI function declaration of function 'Function' /usr/include/readline/rltypedefs.h:36:25: warning: non-ANSI function declaration of function 'VFunction' /usr/include/readline/rltypedefs.h:37:27: warning: non-ANSI function declaration of function 'CPFunction' /usr/include/readline/rltypedefs.h:38:29: warning: non-ANSI function declaration of function 'CPPFunction' src/shared/crypto.c:271:21: warning: Variable length array is used. src/shared/crypto.c:272:23: warning: Variable length array is used. src/shared/gatt-helpers.c:768:31: warning: Variable length array is used. src/shared/gatt-helpers.c:830:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1323:31: warning: Variable length array is used. src/shared/gatt-helpers.c:1354:23: warning: Variable length array is used. src/shared/gatt-server.c:278:25: warning: Variable length array is used. src/shared/gatt-server.c:621:25: warning: Variable length array is used. src/shared/gatt-server.c:720:25: warning: Variable length array is used. src/shared/bap.c:282:25: warning: array of flexible structures src/shared/bap.c: note: in included file: ./src/shared/ascs.h:88:25: warning: array of flexible structures src/shared/shell.c: note: in included file (through /usr/include/readline/readline.h): /usr/include/readline/rltypedefs.h:35:23: warning: non-ANSI function declaration of function 'Function' /usr/include/readline/rltypedefs.h:36:25: warning: non-ANSI function declaration of function 'VFunction' /usr/include/readline/rltypedefs.h:37:27: warning: non-ANSI function declaration of function 'CPFunction' /usr/include/readline/rltypedefs.h:38:29: warning: non-ANSI function declaration of function 'CPPFunction' tools/mesh-cfgtest.c:1453:17: warning: unknown escape sequence: '\%' tools/sco-tester.c: note: in included file: ./lib/bluetooth.h:219:15: warning: array of flexible structures ./lib/bluetooth.h:224:31: warning: array of flexible structures tools/sco-tester.c: In function ‘sco_connect_cb’: tools/sco-tester.c:712:6: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 712 | if (scodata->data_len != ret) { | ^ cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/sco-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 ############################## Test: bluezmakeextell - FAIL Desc: Build Bluez with External ELL Output: tools/sco-tester.c: In function ‘sco_connect_cb’: tools/sco-tester.c:712:6: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 712 | if (scodata->data_len != ret) { | ^ cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/sco-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 ############################## Test: IncrementalBuild - FAIL Desc: Incremental build with the patches in the series Output: [BlueZ,v6,5/7] sco-tester: add TX timestamping test tools/sco-tester.c: In function ‘sco_connect_cb’: tools/sco-tester.c:713:4: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 713 | tester_warn("Failed to write %u bytes: %zu %s (%d)", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 714 | scodata->data_len, ret, strerror(errno), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 715 | errno); | ~~~~~~ cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/sco-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12721:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12721 | int main(int argc, char *argv[]) | ^~~~ make: *** [Makefile:4649: all] Error 2 ############################## Test: ScanBuild - FAIL Desc: Run Scan Build Output: src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed gatt_db_unregister(op->client->db, op->db_id); ^~~~~~~~~~ src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed discovery_op_complete(op, false, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed discover_all(op); ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed discovery_op_ref(op), ^~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed complete_write_long_op(req, success, 0, false); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed request_unref(req); ^~~~~~~~~~~~~~~~~~ 12 warnings generated. src/shared/shell.c:1331:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt') if (c != opt->options[index - offset].val) { ^~~~~~~~~~~~ 1 warning generated. src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed gatt_db_unregister(op->client->db, op->db_id); ^~~~~~~~~~ src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed discovery_op_complete(op, false, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed discovery_op_complete(op, success, att_ecode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed discover_all(op); ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed if (read_db_hash(op)) { ^~~~~~~~~~~~~~~~ src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed discovery_op_ref(op), ^~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed complete_write_long_op(req, success, 0, false); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed request_unref(req); ^~~~~~~~~~~~~~~~~~ 12 warnings generated. src/shared/shell.c:1331:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt') if (c != opt->options[index - offset].val) { ^~~~~~~~~~~~ 1 warning generated. tools/hciattach.c:816:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 10)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:864:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:886:8: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 10)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:908:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:929:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 4)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/hciattach.c:973:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n' if ((n = read_hci_event(fd, resp, 6)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 warnings generated. src/oui.c:50:2: warning: Value stored to 'hwdb' is never read hwdb = udev_hwdb_unref(hwdb); ^ ~~~~~~~~~~~~~~~~~~~~~ src/oui.c:53:2: warning: Value stored to 'udev' is never read udev = udev_unref(udev); ^ ~~~~~~~~~~~~~~~~ 2 warnings generated. tools/hcidump.c:180:9: warning: Potential leak of memory pointed to by 'dp' if (fds[i].fd == sock) ^~~ tools/hcidump.c:248:17: warning: Assigned value is garbage or undefined dh->ts_sec = htobl(frm.ts.tv_sec); ^ ~~~~~~~~~~~~~~~~~~~~ tools/hcidump.c:326:9: warning: 1st function call argument is an uninitialized value if (be32toh(dp.flags) & 0x02) { ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:341:20: warning: 1st function call argument is an uninitialized value frm.data_len = be32toh(dp.len); ^~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:346:14: warning: 1st function call argument is an uninitialized value opcode = be32toh(dp.flags) & 0xffff; ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:384:17: warning: Assigned value is garbage or undefined frm.data_len = btohs(dh.len); ^ ~~~~~~~~~~~~~ tools/hcidump.c:394:11: warning: Assigned value is garbage or undefined frm.len = frm.data_len; ^ ~~~~~~~~~~~~ tools/hcidump.c:398:9: warning: 1st function call argument is an uninitialized value ts = be64toh(ph.ts); ^~~~~~~~~~~~~~ /usr/include/endian.h:51:22: note: expanded from macro 'be64toh' # define be64toh(x) __bswap_64 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:403:13: warning: 1st function call argument is an uninitialized value frm.in = be32toh(dp.flags) & 0x01; ^~~~~~~~~~~~~~~~~ /usr/include/endian.h:46:22: note: expanded from macro 'be32toh' # define be32toh(x) __bswap_32 (x) ^~~~~~~~~~~~~~ tools/hcidump.c:408:11: warning: Assigned value is garbage or undefined frm.in = dh.in; ^ ~~~~~ tools/hcidump.c:437:7: warning: Null pointer passed to 1st parameter expecting 'nonnull' fd = open(file, open_flags, 0644); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11 warnings generated. tools/rfcomm.c:234:3: warning: Value stored to 'i' is never read i = execvp(cmdargv[0], cmdargv); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:234:7: warning: Null pointer passed to 1st parameter expecting 'nonnull' i = execvp(cmdargv[0], cmdargv); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:354:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd' if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/rfcomm.c:497:14: warning: Assigned value is garbage or undefined req.channel = raddr.rc_channel; ^ ~~~~~~~~~~~~~~~~ tools/rfcomm.c:515:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd' if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 warnings generated. src/sdp-xml.c:126:10: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ src/sdp-xml.c:300:11: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ src/sdp-xml.c:338:11: warning: Assigned value is garbage or undefined buf[1] = data[i + 1]; ^ ~~~~~~~~~~~ 3 warnings generated. tools/ciptool.c:350:7: warning: 5th function call argument is an uninitialized value sk = do_connect(ctl, dev_id, &src, &dst, psm, (1 << CMTP_LOOPBACK)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. tools/sdptool.c:941:26: warning: Result of 'malloc' is converted to a pointer of type 'uint32_t', which is incompatible with sizeof operand type 'int' uint32_t *value_int = malloc(sizeof(int)); ~~~~~~~~~~ ^~~~~~ ~~~~~~~~~~~ tools/sdptool.c:980:4: warning: 1st function call argument is an uninitialized value free(allocArray[i]); ^~~~~~~~~~~~~~~~~~~ tools/sdptool.c:3777:2: warning: Potential leak of memory pointed to by 'si.name' return add_service(0, &si); ^~~~~~~~~~~~~~~~~~~~~~~~~~ tools/sdptool.c:4112:4: warning: Potential leak of memory pointed to by 'context.svc' return -1; ^~~~~~~~~ 4 warnings generated. tools/sco-tester.c: In function ‘sco_connect_cb’: tools/sco-tester.c:712:6: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 712 | if (scodata->data_len != ret) { | ^ cc1: all warnings being treated as errors make[1]: *** [Makefile:7807: tools/sco-tester.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4649: all] Error 2 --- Regards, Linux Bluetooth ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH BlueZ v7 1/7] lib: add BT_SCM_ERROR @ 2024-04-04 16:21 Pauli Virtanen 2024-04-04 20:47 ` tests: add TX timestamping tests bluez.test.bot 0 siblings, 1 reply; 13+ messages in thread From: Pauli Virtanen @ 2024-04-04 16:21 UTC (permalink / raw) To: linux-bluetooth; +Cc: Pauli Virtanen Add new CMSG type used in new kernel TX timestamping support. --- lib/bluetooth.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/bluetooth.h b/lib/bluetooth.h index 75dc960c8..a4ed65d0b 100644 --- a/lib/bluetooth.h +++ b/lib/bluetooth.h @@ -141,6 +141,7 @@ struct bt_voice { #define BT_PKT_STATUS 16 #define BT_SCM_PKT_STATUS 0x03 +#define BT_SCM_ERROR 0x04 #define BT_ISO_QOS 17 -- 2.44.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* RE: tests: add TX timestamping tests 2024-04-04 16:21 [PATCH BlueZ v7 1/7] lib: add BT_SCM_ERROR Pauli Virtanen @ 2024-04-04 20:47 ` bluez.test.bot 0 siblings, 0 replies; 13+ messages in thread From: bluez.test.bot @ 2024-04-04 20:47 UTC (permalink / raw) To: linux-bluetooth, pav [-- Attachment #1: Type: text/plain, Size: 2257 bytes --] This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=841499 ---Test result--- Test Summary: CheckPatch PASS 3.60 seconds GitLint PASS 2.18 seconds BuildEll PASS 25.33 seconds BluezMake PASS 1706.77 seconds MakeCheck PASS 12.90 seconds MakeDistcheck PASS 191.44 seconds CheckValgrind PASS 258.09 seconds CheckSmatch WARNING 360.78 seconds bluezmakeextell PASS 121.74 seconds IncrementalBuild PASS 11211.61 seconds ScanBuild WARNING 978.10 seconds Details ############################## Test: CheckSmatch - WARNING Desc: Run smatch tool with source Output: emulator/btdev.c:436:29: warning: Variable length array is used.tools/sco-tester.c: note: in included file:./lib/bluetooth.h:219:15: warning: array of flexible structures./lib/bluetooth.h:224:31: warning: array of flexible structuresemulator/bthost.c:610:28: warning: Variable length array is used.emulator/bthost.c:784:28: warning: Variable length array is used. ############################## Test: ScanBuild - WARNING Desc: Run Scan Build Output: emulator/btdev.c:1101:10: warning: Although the value stored to 'conn' is used in the enclosing expression, the value is never actually read from 'conn' while ((conn = queue_find(dev->conns, match_handle, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ emulator/btdev.c:1388:24: warning: Access to field 'link' results in a dereference of a null pointer (loaded from variable 'conn') pending_conn_del(dev, conn->link->dev); ^~~~~~~~~~ emulator/btdev.c:1510:13: warning: Access to field 'dev' results in a dereference of a null pointer (loaded from variable 'conn') send_event(conn->dev, BT_HCI_EVT_AUTH_COMPLETE, &ev, sizeof(ev)); ^~~~~~~~~ 3 warnings generated. --- Regards, Linux Bluetooth ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2024-04-04 20:47 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-03-02 20:09 [PATCH BlueZ 0/3] tests: add TX timestamping tests Pauli Virtanen 2024-03-02 20:09 ` [PATCH BlueZ 1/3] lib: add BT_SCM_ERROR sock_extended_err CMSG Pauli Virtanen 2024-03-02 21:06 ` tests: add TX timestamping tests bluez.test.bot 2024-03-02 20:09 ` [PATCH BlueZ 2/3] iso-tester: Add tests for TX timestamping Pauli Virtanen 2024-03-02 20:09 ` [PATCH BlueZ 3/3] l2cap-tester: Add test " Pauli Virtanen 2024-03-04 14:43 ` [PATCH BlueZ 0/3] tests: add TX timestamping tests Luiz Augusto von Dentz -- strict thread matches above, loose matches on Subject: below -- 2024-03-14 18:21 [PATCH BlueZ v2 1/9] lib: add BT_SCM_ERROR and BT_NO_ERRQUEUE_POLL Pauli Virtanen 2024-03-14 19:20 ` tests: add TX timestamping tests bluez.test.bot 2024-04-02 16:42 [PATCH BlueZ v3 1/8] lib: add BT_SCM_ERROR and BT_NO_ERRQUEUE_POLL Pauli Virtanen 2024-04-02 17:59 ` tests: add TX timestamping tests bluez.test.bot 2024-04-02 18:49 [PATCH BlueZ v4 1/7] lib: add BT_SCM_ERROR Pauli Virtanen 2024-04-02 19:56 ` tests: add TX timestamping tests bluez.test.bot 2024-04-03 16:43 [PATCH BlueZ v5 1/7] lib: add BT_SCM_ERROR Pauli Virtanen 2024-04-03 17:11 ` tests: add TX timestamping tests bluez.test.bot 2024-04-03 17:14 ` Luiz Augusto von Dentz 2024-04-03 18:26 [PATCH BlueZ v6 1/7] lib: add BT_SCM_ERROR Pauli Virtanen 2024-04-03 20:48 ` tests: add TX timestamping tests bluez.test.bot 2024-04-04 16:21 [PATCH BlueZ v7 1/7] lib: add BT_SCM_ERROR Pauli Virtanen 2024-04-04 20:47 ` tests: add TX timestamping tests bluez.test.bot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).