DragonFlyBSD Kernel Audit
DF-1848 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/virtual/amazon/ena/ena-com/ena_com.c b/sys/dev/virtual/amazon/ena/ena-com/ena_com.c
--- a/sys/dev/virtual/amazon/ena/ena-com/ena_com.c
+++ b/sys/dev/virtual/amazon/ena/ena-com/ena_com.c
@@ -660,6 +660,12 @@
 	else
 		llq_info->descs_per_entry = 1;
 
+	/* Spec allows LLQ_NUM_DESCS_BEFORE_HEADER_0, which makes
+	 * descs_left_in_line=0 and lets get_sq_desc_llq index past the bounce
+	 * buffer.  Reject it as a defence-in-depth guard. */
+	if (llq_desc->desc_num_before_header_ctrl == 0)
+		return -EINVAL;
+
 	llq_info->descs_num_before_header = llq_desc->desc_num_before_header_ctrl;
 
 	return 0;