Kaynağa Gözat

Avoid passing empty buffers in vsock driver.

Andrew Walbran 1 yıl önce
ebeveyn
işleme
f8b26ccf92
1 değiştirilmiş dosya ile 10 ekleme ve 5 silme
  1. 10 5
      src/device/socket/vsock.rs

+ 10 - 5
src/device/socket/vsock.rs

@@ -411,11 +411,16 @@ impl<H: Hal, T: Transport> VirtIOSocket<H, T> {
     }
 
     fn send_packet_to_tx_queue(&mut self, header: &VirtioVsockHdr, buffer: &[u8]) -> Result {
-        let _len = self.tx.add_notify_wait_pop(
-            &[header.as_bytes(), buffer],
-            &mut [],
-            &mut self.transport,
-        )?;
+        let _len = if buffer.is_empty() {
+            self.tx
+                .add_notify_wait_pop(&[header.as_bytes()], &mut [], &mut self.transport)?
+        } else {
+            self.tx.add_notify_wait_pop(
+                &[header.as_bytes(), buffer],
+                &mut [],
+                &mut self.transport,
+            )?
+        };
         Ok(())
     }