[DCCP] feat: Pass dccp_minisock ptr where only the minisock is used

This is in preparation for having a dccp_minisock embedded into
dccp_request_sock so that feature negotiation can be done prior to
creating the full blown dccp_sock.

Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/net/dccp/feat.c b/net/dccp/feat.c
index b09064c..e3dd30d 100644
--- a/net/dccp/feat.c
+++ b/net/dccp/feat.c
@@ -19,10 +19,9 @@
 
 #define DCCP_FEAT_SP_NOAGREE (-123)
 
-int dccp_feat_change(struct sock *sk, u8 type, u8 feature, u8 *val, u8 len,
-		     gfp_t gfp)
+int dccp_feat_change(struct dccp_minisock *dmsk, u8 type, u8 feature,
+		     u8 *val, u8 len, gfp_t gfp)
 {
-	struct dccp_minisock *dmsk = dccp_msk(sk);
 	struct dccp_opt_pend *opt;
 
 	dccp_pr_debug("feat change type=%d feat=%d\n", type, feature);
@@ -307,9 +306,9 @@
 	return 0;
 }
 
-static void dccp_feat_empty_confirm(struct sock *sk, u8 type, u8 feature)
+static void dccp_feat_empty_confirm(struct dccp_minisock *dmsk,
+				    u8 type, u8 feature)
 {
-	struct dccp_minisock *dmsk = dccp_msk(sk);
 	/* XXX check if other confirms for that are queued and recycle slot */
 	struct dccp_opt_pend *opt = kzalloc(sizeof(*opt), GFP_ATOMIC);
 
@@ -388,7 +387,7 @@
 		 * mandatory
 		 */
 		if (rc != DCCP_FEAT_SP_NOAGREE)
-			dccp_feat_empty_confirm(sk, type, feature);
+			dccp_feat_empty_confirm(dccp_msk(sk), type, feature);
 	}
 
 	/* generate the confirm [if required] */
@@ -456,9 +455,8 @@
 
 EXPORT_SYMBOL_GPL(dccp_feat_confirm_recv);
 
-void dccp_feat_clean(struct sock *sk)
+void dccp_feat_clean(struct dccp_minisock *dmsk)
 {
-	struct dccp_minisock *dmsk = dccp_msk(sk);
 	struct dccp_opt_pend *opt, *next;
 
 	list_for_each_entry_safe(opt, next, &dmsk->dccpms_pending,
@@ -537,49 +535,49 @@
 	return rc;
 
 out_clean:
-	dccp_feat_clean(newsk);
+	dccp_feat_clean(newdmsk);
 	rc = -ENOMEM;
 	goto out;
 }
 
 EXPORT_SYMBOL_GPL(dccp_feat_clone);
 
-static int __dccp_feat_init(struct sock *sk, u8 type, u8 feat, u8 *val, u8 len)
+static int __dccp_feat_init(struct dccp_minisock *dmsk, u8 type, u8 feat,
+			    u8 *val, u8 len)
 {
 	int rc = -ENOMEM;
 	u8 *copy = kmalloc(len, GFP_KERNEL);
 
 	if (copy != NULL) {
 		memcpy(copy, val, len);
-		rc = dccp_feat_change(sk, type, feat, copy, len, GFP_KERNEL);
+		rc = dccp_feat_change(dmsk, type, feat, copy, len, GFP_KERNEL);
 		if (rc)
 			kfree(copy);
 	}
 	return rc;
 }
 
-int dccp_feat_init(struct sock *sk)
+int dccp_feat_init(struct dccp_minisock *dmsk)
 {
-	struct dccp_minisock *dmsk = dccp_msk(sk);
 	int rc;
 
 	INIT_LIST_HEAD(&dmsk->dccpms_pending);
 	INIT_LIST_HEAD(&dmsk->dccpms_conf);
 
 	/* CCID L */
-	rc = __dccp_feat_init(sk, DCCPO_CHANGE_L, DCCPF_CCID,
+	rc = __dccp_feat_init(dmsk, DCCPO_CHANGE_L, DCCPF_CCID,
 			      &dmsk->dccpms_tx_ccid, 1);
 	if (rc)
 		goto out;
 
 	/* CCID R */
-	rc = __dccp_feat_init(sk, DCCPO_CHANGE_R, DCCPF_CCID,
+	rc = __dccp_feat_init(dmsk, DCCPO_CHANGE_R, DCCPF_CCID,
 			      &dmsk->dccpms_rx_ccid, 1);
 	if (rc)
 		goto out;
 
 	/* Ack ratio */
-	rc = __dccp_feat_init(sk, DCCPO_CHANGE_L, DCCPF_ACK_RATIO,
+	rc = __dccp_feat_init(dmsk, DCCPO_CHANGE_L, DCCPF_ACK_RATIO,
 			      &dmsk->dccpms_ack_ratio, 1);
 out:
 	return rc;