Message ID | 20220701055237.2946-1-wangyouwan@uniontech.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | obexd: fix crashed after cancel the on-going transfer | expand |
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=655654 ---Test result--- Test Summary: CheckPatch PASS 1.71 seconds GitLint PASS 1.07 seconds Prep - Setup ELL PASS 27.14 seconds Build - Prep PASS 0.80 seconds Build - Configure PASS 8.53 seconds Build - Make FAIL 96.42 seconds Make Check FAIL 173.46 seconds Make Check w/Valgrind FAIL 77.25 seconds Make Distcheck PASS 229.35 seconds Build w/ext ELL - Configure PASS 8.55 seconds Build w/ext ELL - Make FAIL 34.65 seconds Incremental Build w/ patches PASS 0.00 seconds Scan Build FAIL 466.61 seconds Details ############################## Test: Build - Make - FAIL Desc: Build the BlueZ source tree Output: tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12426:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12426 | int main(int argc, char *argv[]) | ^~~~ gobex/gobex-transfer.c: In function ‘transfer_complete’: gobex/gobex-transfer.c:97:2: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] 97 | guint id = transfer->id; | ^~~~~ gobex/gobex-transfer.c: In function ‘transfer_response’: gobex/gobex-transfer.c:187:8: error: unused variable ‘id’ [-Werror=unused-variable] 187 | guint id; | ^~ cc1: all warnings being treated as errors make[1]: *** [Makefile:8801: gobex/obexd-gobex-transfer.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4324: all] Error 2 ############################## Test: Make Check - FAIL Desc: Run 'make check' Output: gobex/gobex-transfer.c: In function ‘transfer_complete’: gobex/gobex-transfer.c:97:2: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] 97 | guint id = transfer->id; | ^~~~~ gobex/gobex-transfer.c: In function ‘transfer_response’: gobex/gobex-transfer.c:187:8: error: unused variable ‘id’ [-Werror=unused-variable] 187 | guint id; | ^~ cc1: all warnings being treated as errors make[1]: *** [Makefile:7300: gobex/gobex-transfer.o] Error 1 make: *** [Makefile:11320: check] Error 2 ############################## Test: Make Check w/Valgrind - FAIL Desc: Run 'make check' with Valgrind Output: tools/mgmt-tester.c: In function ‘main’: tools/mgmt-tester.c:12426:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 12426 | int main(int argc, char *argv[]) | ^~~~ gobex/gobex-transfer.c: In function ‘transfer_complete’: gobex/gobex-transfer.c:97:2: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] 97 | guint id = transfer->id; | ^~~~~ gobex/gobex-transfer.c: In function ‘transfer_response’: gobex/gobex-transfer.c:187:8: error: unused variable ‘id’ [-Werror=unused-variable] 187 | guint id; | ^~ cc1: all warnings being treated as errors make[1]: *** [Makefile:8801: gobex/obexd-gobex-transfer.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4324: all] Error 2 ############################## Test: Build w/ext ELL - Make - FAIL Desc: Build BlueZ source with '--enable-external-ell' configuration Output: gobex/gobex-transfer.c: In function ‘transfer_complete’: gobex/gobex-transfer.c:97:2: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] 97 | guint id = transfer->id; | ^~~~~ gobex/gobex-transfer.c: In function ‘transfer_response’: gobex/gobex-transfer.c:187:8: error: unused variable ‘id’ [-Werror=unused-variable] 187 | guint id; | ^~ cc1: all warnings being treated as errors make[1]: *** [Makefile:8801: gobex/obexd-gobex-transfer.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:4324: all] Error 2 ############################## Test: Scan Build - FAIL Desc: Run Scan Build with patches Output: gobex/gobex-transfer.c: In function ‘transfer_complete’: gobex/gobex-transfer.c:97:2: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] 97 | guint id = transfer->id; | ^~~~~ gobex/gobex-transfer.c: In function ‘transfer_response’: gobex/gobex-transfer.c:187:8: error: unused variable ‘id’ [-Werror=unused-variable] 187 | guint id; | ^~ cc1: all warnings being treated as errors make[1]: *** [Makefile:7300: gobex/gobex-transfer.o] Error 1 make: *** [Makefile:4324: all] Error 2 --- Regards, Linux Bluetooth
diff --git a/gobex/gobex-transfer.c b/gobex/gobex-transfer.c index c94d018b2..bd820757d 100644 --- a/gobex/gobex-transfer.c +++ b/gobex/gobex-transfer.c @@ -83,15 +83,18 @@ static struct transfer *find_transfer(guint id) static void transfer_complete(struct transfer *transfer, GError *err) { - guint id = transfer->id; + if (!g_slist_find(transfers, transfer)) + return; - g_obex_debug(G_OBEX_DEBUG_TRANSFER, "transfer %u", id); + transfer->req_id = 0; + g_obex_debug(G_OBEX_DEBUG_TRANSFER, "transfer %u", transfer->id); if (err) { /* No further tx must be performed */ g_obex_drop_tx_queue(transfer->obex); } + guint id = transfer->id; transfer->complete_func(transfer->obex, err, transfer->user_data); /* Check if the complete_func removed the transfer */ if (find_transfer(id) == NULL) @@ -106,9 +109,6 @@ static void transfer_abort_response(GObex *obex, GError *err, GObexPacket *rsp, struct transfer *transfer = user_data; g_obex_debug(G_OBEX_DEBUG_TRANSFER, "transfer %u", transfer->id); - - transfer->req_id = 0; - /* Intentionally override error */ err = g_error_new(G_OBEX_ERROR, G_OBEX_ERROR_CANCELLED, "Operation was aborted"); @@ -186,11 +186,6 @@ static void transfer_response(GObex *obex, GError *err, GObexPacket *rsp, gboolean rspcode, final; guint id; - g_obex_debug(G_OBEX_DEBUG_TRANSFER, "transfer %u", transfer->id); - - id = transfer->req_id; - transfer->req_id = 0; - if (err != NULL) { transfer_complete(transfer, err); return; @@ -203,6 +198,9 @@ static void transfer_response(GObex *obex, GError *err, GObexPacket *rsp, goto failed; } + if (!g_slist_find(transfers, transfer)) + return; + if (transfer->opcode == G_OBEX_OP_GET) { handle_get_body(transfer, rsp, &err); if (err != NULL) @@ -222,8 +220,6 @@ static void transfer_response(GObex *obex, GError *err, GObexPacket *rsp, req = g_obex_packet_new(transfer->opcode, TRUE, G_OBEX_HDR_INVALID); } else { - /* Keep id since request still outstanting */ - transfer->req_id = id; return; }