On Fri, 2012-06-29 at 17:45 +0100, Vincent Sanders wrote:
From: Javier Martinez Canillas <redacted>
This patch adds a garbage collector for AF_BUS sockets.
[...]
+struct sock *bus_get_socket(struct file *filp)
+{
+ struct sock *u_sock = NULL;
+ struct inode *inode = filp->f_path.dentry->d_inode;
+
+ /*
+ * Socket ?
+ */
+ if (S_ISSOCK(inode->i_mode) && !(filp->f_mode & FMODE_PATH)) {
+ struct socket *sock = SOCKET_I(inode);
+ struct sock *s = sock->sk;
+
+ /*
+ * PF_BUS ?
+ */
+ if (s && sock->ops && sock->ops->family == PF_BUS)
+ u_sock = s;
+ }
+ return u_sock;
+}
[...]
What about references cycles involving both AF_BUS and AF_UNIX sockets?
I think you must either specifically prevent passing AF_UNIX sockets
through AF_BUS sockets, or make a single garbage collector handle them
both.
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.