All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vladislav Yasevich <vladislav.yasevich@hp.com>
To: Benjamin Poirier <bpoirier@suse.de>
Cc: "David S. Miller" <davem@davemloft.net>,
	Christine Caulfield <ccaulfie@redhat.com>,
	David Teigland <teigland@redhat.com>,
	Sridhar Samudrala <sri@us.ibm.com>,
	cluster-devel@redhat.com, linux-sctp@vger.kernel.org,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/2] sctp: Export sctp_do_peeloff
Date: Thu, 08 Mar 2012 20:07:40 +0000	[thread overview]
Message-ID: <4F59118C.9090605@hp.com> (raw)
In-Reply-To: <1331222159-28980-1-git-send-email-bpoirier@suse.de>

On 03/08/2012 10:55 AM, Benjamin Poirier wrote:
> lookup sctp_association within sctp_do_peeloff() to enable its use outside of
> the sctp code with minimal knowledge of the former.
> 
> Signed-off-by: Benjamin Poirier <bpoirier@suse.de>
> 

Acked-by: Vlad Yasevich <vladislav.yasevich@hp.com>

-vlad

> ---
> Changes from v1:
> * make sctp_do_peeloff() take the assoc id as argument so that the dlm code
>   doesn't need to do the id to struct lookup itself
> * split those sctp changes to their own patch
> 
>  include/net/sctp/sctp.h |    1 +
>  net/sctp/socket.c       |   24 +++++++++---------------
>  2 files changed, 10 insertions(+), 15 deletions(-)
> 
> diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
> index d368561..6ee44b2 100644
> --- a/include/net/sctp/sctp.h
> +++ b/include/net/sctp/sctp.h
> @@ -413,6 +413,7 @@ static inline sctp_assoc_t sctp_assoc2id(const struct sctp_association *asoc)
>  /* Look up the association by its id.  */
>  struct sctp_association *sctp_id2assoc(struct sock *sk, sctp_assoc_t id);
>  
> +int sctp_do_peeloff(struct sock *sk, sctp_assoc_t id, struct socket **sockp);
>  
>  /* A macro to walk a list of skbs.  */
>  #define sctp_skb_for_each(pos, head, tmp) \
> diff --git a/net/sctp/socket.c b/net/sctp/socket.c
> index 408ebd0..06b42b7 100644
> --- a/net/sctp/socket.c
> +++ b/net/sctp/socket.c
> @@ -4170,14 +4170,16 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv
>  }
>  
>  /* Helper routine to branch off an association to a new socket.  */
> -SCTP_STATIC int sctp_do_peeloff(struct sctp_association *asoc,
> -				struct socket **sockp)
> +int sctp_do_peeloff(struct sock *sk, sctp_assoc_t id, struct socket **sockp)
>  {
> -	struct sock *sk = asoc->base.sk;
> +	struct sctp_association *asoc = sctp_id2assoc(sk, id);
>  	struct socket *sock;
>  	struct sctp_af *af;
>  	int err = 0;
>  
> +	if (!asoc)
> +		return -EINVAL;
> +
>  	/* An association cannot be branched off from an already peeled-off
>  	 * socket, nor is this supported for tcp style sockets.
>  	 */
> @@ -4206,13 +4208,13 @@ SCTP_STATIC int sctp_do_peeloff(struct sctp_association *asoc,
>  
>  	return err;
>  }
> +EXPORT_SYMBOL(sctp_do_peeloff);
>  
>  static int sctp_getsockopt_peeloff(struct sock *sk, int len, char __user *optval, int __user *optlen)
>  {
>  	sctp_peeloff_arg_t peeloff;
>  	struct socket *newsock;
>  	int retval = 0;
> -	struct sctp_association *asoc;
>  
>  	if (len < sizeof(sctp_peeloff_arg_t))
>  		return -EINVAL;
> @@ -4220,15 +4222,7 @@ static int sctp_getsockopt_peeloff(struct sock *sk, int len, char __user *optval
>  	if (copy_from_user(&peeloff, optval, len))
>  		return -EFAULT;
>  
> -	asoc = sctp_id2assoc(sk, peeloff.associd);
> -	if (!asoc) {
> -		retval = -EINVAL;
> -		goto out;
> -	}
> -
> -	SCTP_DEBUG_PRINTK("%s: sk: %p asoc: %p\n", __func__, sk, asoc);
> -
> -	retval = sctp_do_peeloff(asoc, &newsock);
> +	retval = sctp_do_peeloff(sk, peeloff.associd, &newsock);
>  	if (retval < 0)
>  		goto out;
>  
> @@ -4239,8 +4233,8 @@ static int sctp_getsockopt_peeloff(struct sock *sk, int len, char __user *optval
>  		goto out;
>  	}
>  
> -	SCTP_DEBUG_PRINTK("%s: sk: %p asoc: %p newsk: %p sd: %d\n",
> -			  __func__, sk, asoc, newsock->sk, retval);
> +	SCTP_DEBUG_PRINTK("%s: sk: %p newsk: %p sd: %d\n",
> +			  __func__, sk, newsock->sk, retval);
>  
>  	/* Return the fd mapped to the new socket.  */
>  	peeloff.sd = retval;


WARNING: multiple messages have this Message-ID (diff)
From: Vladislav Yasevich <vladislav.yasevich@hp.com>
To: Benjamin Poirier <bpoirier@suse.de>
Cc: "David S. Miller" <davem@davemloft.net>,
	Christine Caulfield <ccaulfie@redhat.com>,
	David Teigland <teigland@redhat.com>,
	Sridhar Samudrala <sri@us.ibm.com>,
	cluster-devel@redhat.com, linux-sctp@vger.kernel.org,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/2] sctp: Export sctp_do_peeloff
Date: Thu, 08 Mar 2012 15:07:40 -0500	[thread overview]
Message-ID: <4F59118C.9090605@hp.com> (raw)
In-Reply-To: <1331222159-28980-1-git-send-email-bpoirier@suse.de>

On 03/08/2012 10:55 AM, Benjamin Poirier wrote:
> lookup sctp_association within sctp_do_peeloff() to enable its use outside of
> the sctp code with minimal knowledge of the former.
> 
> Signed-off-by: Benjamin Poirier <bpoirier@suse.de>
> 

Acked-by: Vlad Yasevich <vladislav.yasevich@hp.com>

-vlad

> ---
> Changes from v1:
> * make sctp_do_peeloff() take the assoc id as argument so that the dlm code
>   doesn't need to do the id to struct lookup itself
> * split those sctp changes to their own patch
> 
>  include/net/sctp/sctp.h |    1 +
>  net/sctp/socket.c       |   24 +++++++++---------------
>  2 files changed, 10 insertions(+), 15 deletions(-)
> 
> diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
> index d368561..6ee44b2 100644
> --- a/include/net/sctp/sctp.h
> +++ b/include/net/sctp/sctp.h
> @@ -413,6 +413,7 @@ static inline sctp_assoc_t sctp_assoc2id(const struct sctp_association *asoc)
>  /* Look up the association by its id.  */
>  struct sctp_association *sctp_id2assoc(struct sock *sk, sctp_assoc_t id);
>  
> +int sctp_do_peeloff(struct sock *sk, sctp_assoc_t id, struct socket **sockp);
>  
>  /* A macro to walk a list of skbs.  */
>  #define sctp_skb_for_each(pos, head, tmp) \
> diff --git a/net/sctp/socket.c b/net/sctp/socket.c
> index 408ebd0..06b42b7 100644
> --- a/net/sctp/socket.c
> +++ b/net/sctp/socket.c
> @@ -4170,14 +4170,16 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv
>  }
>  
>  /* Helper routine to branch off an association to a new socket.  */
> -SCTP_STATIC int sctp_do_peeloff(struct sctp_association *asoc,
> -				struct socket **sockp)
> +int sctp_do_peeloff(struct sock *sk, sctp_assoc_t id, struct socket **sockp)
>  {
> -	struct sock *sk = asoc->base.sk;
> +	struct sctp_association *asoc = sctp_id2assoc(sk, id);
>  	struct socket *sock;
>  	struct sctp_af *af;
>  	int err = 0;
>  
> +	if (!asoc)
> +		return -EINVAL;
> +
>  	/* An association cannot be branched off from an already peeled-off
>  	 * socket, nor is this supported for tcp style sockets.
>  	 */
> @@ -4206,13 +4208,13 @@ SCTP_STATIC int sctp_do_peeloff(struct sctp_association *asoc,
>  
>  	return err;
>  }
> +EXPORT_SYMBOL(sctp_do_peeloff);
>  
>  static int sctp_getsockopt_peeloff(struct sock *sk, int len, char __user *optval, int __user *optlen)
>  {
>  	sctp_peeloff_arg_t peeloff;
>  	struct socket *newsock;
>  	int retval = 0;
> -	struct sctp_association *asoc;
>  
>  	if (len < sizeof(sctp_peeloff_arg_t))
>  		return -EINVAL;
> @@ -4220,15 +4222,7 @@ static int sctp_getsockopt_peeloff(struct sock *sk, int len, char __user *optval
>  	if (copy_from_user(&peeloff, optval, len))
>  		return -EFAULT;
>  
> -	asoc = sctp_id2assoc(sk, peeloff.associd);
> -	if (!asoc) {
> -		retval = -EINVAL;
> -		goto out;
> -	}
> -
> -	SCTP_DEBUG_PRINTK("%s: sk: %p asoc: %p\n", __func__, sk, asoc);
> -
> -	retval = sctp_do_peeloff(asoc, &newsock);
> +	retval = sctp_do_peeloff(sk, peeloff.associd, &newsock);
>  	if (retval < 0)
>  		goto out;
>  
> @@ -4239,8 +4233,8 @@ static int sctp_getsockopt_peeloff(struct sock *sk, int len, char __user *optval
>  		goto out;
>  	}
>  
> -	SCTP_DEBUG_PRINTK("%s: sk: %p asoc: %p newsk: %p sd: %d\n",
> -			  __func__, sk, asoc, newsock->sk, retval);
> +	SCTP_DEBUG_PRINTK("%s: sk: %p newsk: %p sd: %d\n",
> +			  __func__, sk, newsock->sk, retval);
>  
>  	/* Return the fd mapped to the new socket.  */
>  	peeloff.sd = retval;


  parent reply	other threads:[~2012-03-08 20:07 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-07 15:41 [PATCH] dlm, sctp: Do not allocate a fd for peeloff Benjamin Poirier
2012-03-07 15:41 ` Benjamin Poirier
2012-03-07 16:29 ` Vladislav Yasevich
2012-03-07 16:29   ` Vladislav Yasevich
2012-03-08  8:24   ` [Cluster-devel] " David Miller
2012-03-08  8:24     ` David Miller
2012-03-08  8:24     ` David Miller
2012-03-08 15:55     ` [PATCH v2 1/2] sctp: Export sctp_do_peeloff Benjamin Poirier
2012-03-08 15:55       ` Benjamin Poirier
2012-03-08 15:55       ` [PATCH v2 2/2] dlm: Do not allocate a fd for peeloff Benjamin Poirier
2012-03-08 15:55         ` Benjamin Poirier
2012-03-08 20:08         ` Vladislav Yasevich
2012-03-08 20:08           ` Vladislav Yasevich
2012-03-08 21:52           ` [Cluster-devel] " David Miller
2012-03-08 21:52             ` David Miller
2012-03-08 21:52             ` David Miller
2012-03-08 20:07       ` Vladislav Yasevich [this message]
2012-03-08 20:07         ` [PATCH v2 1/2] sctp: Export sctp_do_peeloff Vladislav Yasevich
2012-03-08 21:52         ` [Cluster-devel] " David Miller
2012-03-08 21:52           ` David Miller
2012-03-08 21:52           ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F59118C.9090605@hp.com \
    --to=vladislav.yasevich@hp.com \
    --cc=bpoirier@suse.de \
    --cc=ccaulfie@redhat.com \
    --cc=cluster-devel@redhat.com \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sctp@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=sri@us.ibm.com \
    --cc=teigland@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.