forked from mirrors/linux
		
	af_unix: Set drop reason in unix_stream_read_skb().
unix_stream_read_skb() is called when BPF SOCKMAP reads some data from a socket in the map. SOCKMAP does not support MSG_OOB, and reading OOB results in a drop. Let's set drop reasons respectively. * SOCKET_CLOSE : the socket in SOCKMAP was close()d * UNIX_SKIP_OOB : OOB was read from the socket in SOCKMAP Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Link: https://patch.msgid.link/20250116053441.5758-7-kuniyu@amazon.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
		
							parent
							
								
									533643b091
								
							
						
					
					
						commit
						bace4b4680
					
				
					 1 changed files with 2 additions and 2 deletions
				
			
		| 
						 | 
					@ -2724,7 +2724,7 @@ static int unix_stream_read_skb(struct sock *sk, skb_read_actor_t recv_actor)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (sock_flag(sk, SOCK_DEAD)) {
 | 
							if (sock_flag(sk, SOCK_DEAD)) {
 | 
				
			||||||
			unix_state_unlock(sk);
 | 
								unix_state_unlock(sk);
 | 
				
			||||||
			kfree_skb(skb);
 | 
								kfree_skb_reason(skb, SKB_DROP_REASON_SOCKET_CLOSE);
 | 
				
			||||||
			return -ECONNRESET;
 | 
								return -ECONNRESET;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2738,7 +2738,7 @@ static int unix_stream_read_skb(struct sock *sk, skb_read_actor_t recv_actor)
 | 
				
			||||||
		unix_state_unlock(sk);
 | 
							unix_state_unlock(sk);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (drop) {
 | 
							if (drop) {
 | 
				
			||||||
			kfree_skb(skb);
 | 
								kfree_skb_reason(skb, SKB_DROP_REASON_UNIX_SKIP_OOB);
 | 
				
			||||||
			return -EAGAIN;
 | 
								return -EAGAIN;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue