forked from mirrors/linux
		
	 2aac7a2cb0
			
		
	
	
		2aac7a2cb0
		
	
	
	
	
		
			
			When establishing a unix connection on stream sockets the server end receives an skb with socket in its receive queue. Report who is waiting for these ends to be accepted for listening sockets via NLA. There's a lokcing issue with this -- the unix sk state lock is required to access the peer, and it is taken under the listening sk's queue lock. Strictly speaking the queue lock should be taken inside the state lock, but since in this case these two sockets are different it shouldn't lead to deadlock. Signed-off-by: Pavel Emelyanov <xemul@parallels.com> Signed-off-by: David S. Miller <davem@davemloft.net>
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			780 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			780 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __UNIX_DIAG_H__
 | |
| #define __UNIX_DIAG_H__
 | |
| 
 | |
| struct unix_diag_req {
 | |
| 	__u8	sdiag_family;
 | |
| 	__u8	sdiag_protocol;
 | |
| 	__u16	pad;
 | |
| 	__u32	udiag_states;
 | |
| 	__u32	udiag_ino;
 | |
| 	__u32	udiag_show;
 | |
| 	__u32	udiag_cookie[2];
 | |
| };
 | |
| 
 | |
| #define UDIAG_SHOW_NAME		0x00000001	/* show name (not path) */
 | |
| #define UDIAG_SHOW_VFS		0x00000002	/* show VFS inode info */
 | |
| #define UDIAG_SHOW_PEER		0x00000004	/* show peer socket info */
 | |
| #define UDIAG_SHOW_ICONS	0x00000008	/* show pending connections */
 | |
| 
 | |
| struct unix_diag_msg {
 | |
| 	__u8	udiag_family;
 | |
| 	__u8	udiag_type;
 | |
| 	__u8	udiag_state;
 | |
| 	__u8	pad;
 | |
| 
 | |
| 	__u32	udiag_ino;
 | |
| 	__u32	udiag_cookie[2];
 | |
| };
 | |
| 
 | |
| enum {
 | |
| 	UNIX_DIAG_NAME,
 | |
| 	UNIX_DIAG_VFS,
 | |
| 	UNIX_DIAG_PEER,
 | |
| 	UNIX_DIAG_ICONS,
 | |
| 
 | |
| 	UNIX_DIAG_MAX,
 | |
| };
 | |
| 
 | |
| struct unix_diag_vfs {
 | |
| 	__u32	udiag_vfs_ino;
 | |
| 	__u32	udiag_vfs_dev;
 | |
| };
 | |
| 
 | |
| #endif
 |