diff options
Diffstat (limited to 'include/rdma/ib.h')
| -rw-r--r-- | include/rdma/ib.h | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/include/rdma/ib.h b/include/rdma/ib.h index cf8f9e700e48..a6b93706b0fc 100644 --- a/include/rdma/ib.h +++ b/include/rdma/ib.h @@ -34,6 +34,7 @@  #define _RDMA_IB_H  #include <linux/types.h> +#include <linux/sched.h>  struct ib_addr {  	union { @@ -86,4 +87,19 @@ struct sockaddr_ib {  	__u64			sib_scope_id;  }; +/* + * The IB interfaces that use write() as bi-directional ioctl() are + * fundamentally unsafe, since there are lots of ways to trigger "write()" + * calls from various contexts with elevated privileges. That includes the + * traditional suid executable error message writes, but also various kernel + * interfaces that can write to file descriptors. + * + * This function provides protection for the legacy API by restricting the + * calling context. + */ +static inline bool ib_safe_file_access(struct file *filp) +{ +	return filp->f_cred == current_cred() && segment_eq(get_fs(), USER_DS); +} +  #endif /* _RDMA_IB_H */  | 
