diff --git a/res/res_fax.c b/res/res_fax.c
index c301aff312034ce70d163c81c7934f682bc12168..b6fefe2bee26676eb91366d4d3115af2acc696f9 100644
--- a/res/res_fax.c
+++ b/res/res_fax.c
@@ -4509,7 +4509,9 @@ static int acf_faxopt_write(struct ast_channel *chan, const char *cmd, char *dat
 				ast_log(LOG_WARNING, "Attempt to attach a T.38 gateway on channel (%s) with gateway already running.\n", ast_channel_name(chan));
 			}
 		} else if (ast_false(val)) {
+			ast_channel_lock(chan);
 			ast_framehook_detach(chan, details->gateway_id);
+			ast_channel_unlock(chan);
 			details->gateway_id = -1;
 		} else {
 			ast_log(LOG_WARNING, "Unsupported value '%s' passed to FAXOPT(%s).\n", value, data);
@@ -4561,7 +4563,9 @@ static int acf_faxopt_write(struct ast_channel *chan, const char *cmd, char *dat
 				ast_log(LOG_WARNING, "Attempt to attach a FAX detect on channel (%s) with FAX detect already running.\n", ast_channel_name(chan));
 			}
 		} else if (ast_false(val)) {
+			ast_channel_lock(chan);
 			ast_framehook_detach(chan, details->faxdetect_id);
+			ast_channel_unlock(chan);
 			details->faxdetect_id = -1;
 		} else {
 			ast_log(LOG_WARNING, "Unsupported value '%s' passed to FAXOPT(%s).\n", value, data);
diff --git a/res/res_pjsip_refer.c b/res/res_pjsip_refer.c
index 78d6e23b5c047ef1df6a8da6492ab3115efe11cd..19367bf3261d5a960558eace8e921136bfd20efd 100644
--- a/res/res_pjsip_refer.c
+++ b/res/res_pjsip_refer.c
@@ -641,7 +641,9 @@ static void refer_blind_callback(struct ast_channel *chan, struct transfer_chann
 				refer_progress_notify(notification);
 			}
 
+			ast_channel_lock(chan);
 			ast_framehook_detach(chan, refer->progress->framehook);
+			ast_channel_unlock(chan);
 
 			ao2_cleanup(refer->progress);
 		}