Project homepage Mailing List  Warmcat.com  API Docs  Github Mirror 
{"schema":"libjg2-1", "vpath":"/git/", "avatar":"/git/avatar/", "alang":"", "gen_ut":1745910044, "reponame":"libwebsockets", "desc":"libwebsockets lightweight C networking library", "owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://libwebsockets.org/repo/libwebsockets", "f":3, "items": [ {"schema":"libjg2-1", "cid":"d53f7474ac60b24f7baef4e878c4ee4d", "commit": {"type":"commit", "time": 1633682909, "time_ofs": 60, "oid_tree": { "oid": "d73aa5e13db08131d150115c8d11d7a3638a1365", "alias": []}, "oid":{ "oid": "1dbf1d81488df43275d8adc51247dbe164dfe049", "alias": []}, "msg": "freertos: suppress return check on xSemaphoreTake", "sig_commit": { "git_time": { "time": 1633682909, "offset": 60 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "sig_author": { "git_time": { "time": 1633681110, "offset": 60 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }}, "body": "freertos: suppress return check on xSemaphoreTake\n\nWith the timeout set to portMAX_DELAY, there is no timeout and so no way\nfor the api to return failure.\n\nhttps://www.freertos.org/a00122.html\n\nHowever Coverity doesn't understand this, and futher, Coverity usually\nignores (void) result casts. So add needless checks and the corresponding\nneedless unwinding to the 10 uses of lws_mutex_lock() in smd.c.\n\nInvert the return value to align it with pthreads mutex lock return\nsemantics.\n" , "diff": "diff --git a/lib/plat/freertos/private-lib-plat-freertos.h b/lib/plat/freertos/private-lib-plat-freertos.h\nindex 9589f98..d544e2b 100644\n--- a/lib/plat/freertos/private-lib-plat-freertos.h\n+++ b/lib/plat/freertos/private-lib-plat-freertos.h\n@@ -76,7 +76,7 @@ gai_strerror(int);\n typedef SemaphoreHandle_t lws_mutex_t;\n #define lws_mutex_init(x)\tx \u003d xSemaphoreCreateMutex()\n #define lws_mutex_destroy(x)\tvSemaphoreDelete(x)\n-#define lws_mutex_lock(x)\txSemaphoreTake(x, portMAX_DELAY)\n+#define lws_mutex_lock(x)\t(!xSemaphoreTake(x, portMAX_DELAY)) /*0 \u003d OK */\n #define lws_mutex_unlock(x)\txSemaphoreGive(x)\n \n #include \u003clwip/sockets.h\u003e\ndiff --git a/lib/system/smd/smd.c b/lib/system/smd/smd.c\nindex de7af19..89421d4 100644\n--- a/lib/system/smd/smd.c\n+++ b/lib/system/smd/smd.c\n@@ -206,8 +206,9 @@ _lws_smd_msg_send(struct lws_context *ctx, void *pay, struct lws_smd_peer *exc)\n \t\treturn 1;\n \t}\n \n-\tif (!ctx-\u003esmd.delivering)\n-\t\tlws_mutex_lock(ctx-\u003esmd.lock_peers); /* +++++++++++++++ peers */\n+\tif (!ctx-\u003esmd.delivering \u0026\u0026\n+\t lws_mutex_lock(ctx-\u003esmd.lock_peers)) /* +++++++++++++++ peers */\n+\t\treturn 1; /* For Coverity */\n \n \tmsg-\u003erefcount \u003d (uint16_t)_lws_smd_msg_assess_peers_interested(\n \t\t\t\t\t\t\t\u0026ctx-\u003esmd, msg, exc);\n@@ -224,7 +225,8 @@ _lws_smd_msg_send(struct lws_context *ctx, void *pay, struct lws_smd_peer *exc)\n \n \t/* let's add him on the queue... */\n \n-\tlws_mutex_lock(ctx-\u003esmd.lock_messages); /* +++++++++++++++++ messages */\n+\tif (lws_mutex_lock(ctx-\u003esmd.lock_messages)) /* +++++++++++++++++ messages */\n+\t\tgoto bail;\n \tlws_dll2_add_tail(\u0026msg-\u003elist, \u0026ctx-\u003esmd.owner_messages);\n \n \t/*\n@@ -252,6 +254,7 @@ _lws_smd_msg_send(struct lws_context *ctx, void *pay, struct lws_smd_peer *exc)\n \n \tlws_mutex_unlock(ctx-\u003esmd.lock_messages); /* --------------- messages */\n \n+bail:\n \tif (!ctx-\u003esmd.delivering)\n \t\tlws_mutex_unlock(ctx-\u003esmd.lock_peers); /* ------------- peers */\n \n@@ -455,7 +458,8 @@ _lws_smd_peer_destroy(lws_smd_peer_t *pr)\n \tlws_smd_t *smd \u003d lws_container_of(pr-\u003elist.owner, lws_smd_t,\n \t\t\t\t\t owner_peers);\n \n-\tlws_mutex_lock(smd-\u003elock_messages); /* +++++++++ messages */\n+\tif (lws_mutex_lock(smd-\u003elock_messages)) /* +++++++++ messages */\n+\t\treturn; /* For Coverity */\n \n \tlws_dll2_remove(\u0026pr-\u003elist);\n \n@@ -546,7 +550,9 @@ _lws_smd_msg_deliver_peer(struct lws_context *ctx, lws_smd_peer_t *pr)\n \t/* tail message has to actually be of interest to the peer */\n \tassert(!pr-\u003etail || (pr-\u003etail-\u003e_class \u0026 pr-\u003e_class_filter));\n \n-\tlws_mutex_lock(ctx-\u003esmd.lock_messages); /* +++++++++ messages */\n+\tif (lws_mutex_lock(ctx-\u003esmd.lock_messages)) /* +++++++++ messages */\n+\t\treturn 1; /* For Coverity */\n+\n \tif (!--msg-\u003erefcount)\n \t\t_lws_smd_msg_destroy(ctx, \u0026ctx-\u003esmd, msg);\n \tlws_mutex_unlock(ctx-\u003esmd.lock_messages); /* messages ------- */\n@@ -573,7 +579,8 @@ lws_smd_msg_distribute(struct lws_context *ctx)\n \n \tdo {\n \t\tmore \u003d 0;\n-\t\tlws_mutex_lock(ctx-\u003esmd.lock_peers); /* +++++++++++++++ peers */\n+\t\tif (lws_mutex_lock(ctx-\u003esmd.lock_peers)) /* +++++++++++++++ peers */\n+\t\t\treturn 1; /* For Coverity */\n \n \t\tlws_start_foreach_dll_safe(struct lws_dll2 *, p, p1,\n \t\t\t\t\t ctx-\u003esmd.owner_peers.head) {\n@@ -605,14 +612,21 @@ lws_smd_register(struct lws_context *ctx, void *opaque, int flags,\n \tpr-\u003e_class_filter \u003d _class_filter;\n \tpr-\u003ectx \u003d ctx;\n \n-\tif (!ctx-\u003esmd.delivering)\n-\t\tlws_mutex_lock(ctx-\u003esmd.lock_peers); /* +++++++++++++++ peers */\n+\tif (!ctx-\u003esmd.delivering \u0026\u0026\n+\t lws_mutex_lock(ctx-\u003esmd.lock_peers)) { /* +++++++++++++++ peers */\n+\t\t\tlws_free(pr);\n+\t\t\treturn NULL; /* For Coverity */\n+\t\t}\n \n \t/*\n \t * Let's lock the message list before adding this peer... because...\n \t */\n \n-\tlws_mutex_lock(ctx-\u003esmd.lock_messages); /* +++++++++ messages */\n+\tif (lws_mutex_lock(ctx-\u003esmd.lock_messages)) { /* +++++++++ messages */\n+\t\tlws_free(pr);\n+\t\tpr \u003d NULL;\n+\t\tgoto bail1; /* For Coverity */\n+\t}\n \n \tlws_dll2_add_tail(\u0026pr-\u003elist, \u0026ctx-\u003esmd.owner_peers);\n \n@@ -642,6 +656,7 @@ lws_smd_register(struct lws_context *ctx, void *opaque, int flags,\n \tlwsl_cx_info(ctx, \u0022peer %p (count %u) registered\u0022, pr,\n \t\t\t(unsigned int)ctx-\u003esmd.owner_peers.count);\n \n+bail1:\n \tif (!ctx-\u003esmd.delivering)\n \t\tlws_mutex_unlock(ctx-\u003esmd.lock_peers); /* ------------- peers */\n \n@@ -653,8 +668,9 @@ lws_smd_unregister(struct lws_smd_peer *pr)\n {\n \tlws_smd_t *smd \u003d lws_container_of(pr-\u003elist.owner, lws_smd_t, owner_peers);\n \n-\tif (!smd-\u003edelivering)\n-\t\tlws_mutex_lock(smd-\u003elock_peers); /* +++++++++++++++++++ peers */\n+\tif (!smd-\u003edelivering \u0026\u0026\n+\t lws_mutex_lock(smd-\u003elock_peers)) /* +++++++++++++++++++ peers */\n+\t\treturn; /* For Coverity */\n \tlwsl_cx_notice(pr-\u003ectx, \u0022destroying peer %p\u0022, pr);\n \t_lws_smd_peer_destroy(pr);\n \tif (!smd-\u003edelivering)\n@@ -679,8 +695,10 @@ lws_smd_message_pending(struct lws_context *ctx)\n \t * have been hanging around too long\n \t */\n \n-\tlws_mutex_lock(ctx-\u003esmd.lock_peers); /* +++++++++++++++++++++++ peers */\n-\tlws_mutex_lock(ctx-\u003esmd.lock_messages); /* +++++++++++++++++ messages */\n+\tif (lws_mutex_lock(ctx-\u003esmd.lock_peers)) /* +++++++++++++++++++++++ peers */\n+\t\treturn 1; /* For Coverity */\n+\tif (lws_mutex_lock(ctx-\u003esmd.lock_messages)) /* +++++++++++++++++ messages */\n+\t\tgoto bail; /* For Coverity */\n \n \tlws_start_foreach_dll_safe(struct lws_dll2 *, p, p1,\n \t\t\t\t ctx-\u003esmd.owner_messages.head) {\n","s":{"c":1745801260,"u": 6026}} ],"g": 1648,"chitpc": 0,"ehitpc": 0,"indexed":0 , "ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "7d0a"}