Fix crash when vlib_buffer_copy() fails - also sent upstream in https://gerrit.fd.io/r/c/vpp/+/33606
This commit is contained in:
		| @@ -675,10 +675,14 @@ VLIB_NODE_FN (lcp_arp_phy_node) | |||||||
| 		  c0 = vlib_buffer_copy (vm, b0); | 		  c0 = vlib_buffer_copy (vm, b0); | ||||||
| 		  vlib_buffer_advance (b0, len0); | 		  vlib_buffer_advance (b0, len0); | ||||||
|  |  | ||||||
| 		  /* Send to the host */ | 		  if (c0) | ||||||
| 		  vnet_buffer (c0)->sw_if_index[VLIB_TX] = | 		    { | ||||||
| 		    lip0->lip_host_sw_if_index; | 		      /* Send to the host */ | ||||||
| 		  reply_copies[n_copies++] = vlib_get_buffer_index (vm, c0); | 		      vnet_buffer (c0)->sw_if_index[VLIB_TX] = | ||||||
|  | 			lip0->lip_host_sw_if_index; | ||||||
|  | 		      reply_copies[n_copies++] = | ||||||
|  | 			vlib_get_buffer_index (vm, c0); | ||||||
|  | 		    } | ||||||
| 		} | 		} | ||||||
| 	    } | 	    } | ||||||
| 	  if (arp1->opcode == clib_host_to_net_u16 (ETHERNET_ARP_OPCODE_reply)) | 	  if (arp1->opcode == clib_host_to_net_u16 (ETHERNET_ARP_OPCODE_reply)) | ||||||
| @@ -703,10 +707,14 @@ VLIB_NODE_FN (lcp_arp_phy_node) | |||||||
| 		  c1 = vlib_buffer_copy (vm, b1); | 		  c1 = vlib_buffer_copy (vm, b1); | ||||||
| 		  vlib_buffer_advance (b1, len1); | 		  vlib_buffer_advance (b1, len1); | ||||||
|  |  | ||||||
| 		  /* Send to the host */ | 		  if (c1) | ||||||
| 		  vnet_buffer (c1)->sw_if_index[VLIB_TX] = | 		    { | ||||||
| 		    lip1->lip_host_sw_if_index; | 		      /* Send to the host */ | ||||||
| 		  reply_copies[n_copies++] = vlib_get_buffer_index (vm, c1); | 		      vnet_buffer (c1)->sw_if_index[VLIB_TX] = | ||||||
|  | 			lip1->lip_host_sw_if_index; | ||||||
|  | 		      reply_copies[n_copies++] = | ||||||
|  | 			vlib_get_buffer_index (vm, c1); | ||||||
|  | 		    } | ||||||
| 		} | 		} | ||||||
| 	    } | 	    } | ||||||
|  |  | ||||||
| @@ -775,10 +783,14 @@ VLIB_NODE_FN (lcp_arp_phy_node) | |||||||
| 		  c0 = vlib_buffer_copy (vm, b0); | 		  c0 = vlib_buffer_copy (vm, b0); | ||||||
| 		  vlib_buffer_advance (b0, len0); | 		  vlib_buffer_advance (b0, len0); | ||||||
|  |  | ||||||
| 		  /* Send to the host */ | 		  if (c0) | ||||||
| 		  vnet_buffer (c0)->sw_if_index[VLIB_TX] = | 		    { | ||||||
| 		    lip0->lip_host_sw_if_index; | 		      /* Send to the host */ | ||||||
| 		  reply_copies[n_copies++] = vlib_get_buffer_index (vm, c0); | 		      vnet_buffer (c0)->sw_if_index[VLIB_TX] = | ||||||
|  | 			lip0->lip_host_sw_if_index; | ||||||
|  | 		      reply_copies[n_copies++] = | ||||||
|  | 			vlib_get_buffer_index (vm, c0); | ||||||
|  | 		    } | ||||||
| 		} | 		} | ||||||
| 	    } | 	    } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user