Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 347633
b: refs/heads/master
c: acb2887
h: refs/heads/master
i:
  347631: 8a23dbf
v: v3
  • Loading branch information
J. Bruce Fields committed Nov 8, 2012
1 parent 702c907 commit c6702df
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 58 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: face15025ffdf664de95e86ae831544154d26c9c
refs/heads/master: acb2887e04c2140c2c63c8bf94e0b446efcc7001
118 changes: 63 additions & 55 deletions trunk/fs/nfsd/nfs4xdr.c
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,67 @@ nfsd4_decode_access(struct nfsd4_compoundargs *argp, struct nfsd4_access *access
DECODE_TAIL;
}

static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_cb_sec *cbs)
{
DECODE_HEAD;
u32 dummy;
char *machine_name;
int i;
int nr_secflavs;

/* callback_sec_params4 */
READ_BUF(4);
READ32(nr_secflavs);
for (i = 0; i < nr_secflavs; ++i) {
READ_BUF(4);
READ32(dummy);
switch (dummy) {
case RPC_AUTH_NULL:
/* Nothing to read */
break;
case RPC_AUTH_UNIX:
READ_BUF(8);
/* stamp */
READ32(dummy);

/* machine name */
READ32(dummy);
READ_BUF(dummy);
SAVEMEM(machine_name, dummy);

/* uid, gid */
READ_BUF(8);
READ32(cbs->uid);
READ32(cbs->gid);

/* more gids */
READ_BUF(4);
READ32(dummy);
READ_BUF(dummy * 4);
break;
case RPC_AUTH_GSS:
dprintk("RPC_AUTH_GSS callback secflavor "
"not supported!\n");
READ_BUF(8);
/* gcbp_service */
READ32(dummy);
/* gcbp_handle_from_server */
READ32(dummy);
READ_BUF(dummy);
p += XDR_QUADLEN(dummy);
/* gcbp_handle_from_client */
READ_BUF(4);
READ32(dummy);
READ_BUF(dummy);
break;
default:
dprintk("Illegal callback secflavor\n");
return nfserr_inval;
}
}
DECODE_TAIL;
}

static __be32 nfsd4_decode_bind_conn_to_session(struct nfsd4_compoundargs *argp, struct nfsd4_bind_conn_to_session *bcts)
{
DECODE_HEAD;
Expand Down Expand Up @@ -1237,11 +1298,7 @@ nfsd4_decode_create_session(struct nfsd4_compoundargs *argp,
struct nfsd4_create_session *sess)
{
DECODE_HEAD;

u32 dummy;
char *machine_name;
int i;
int nr_secflavs;

READ_BUF(16);
COPYMEM(&sess->clientid, 8);
Expand Down Expand Up @@ -1282,58 +1339,9 @@ nfsd4_decode_create_session(struct nfsd4_compoundargs *argp,
goto xdr_error;
}

READ_BUF(8);
READ_BUF(4);
READ32(sess->callback_prog);

/* callback_sec_params4 */
READ32(nr_secflavs);
for (i = 0; i < nr_secflavs; ++i) {
READ_BUF(4);
READ32(dummy);
switch (dummy) {
case RPC_AUTH_NULL:
/* Nothing to read */
break;
case RPC_AUTH_UNIX:
READ_BUF(8);
/* stamp */
READ32(dummy);

/* machine name */
READ32(dummy);
READ_BUF(dummy);
SAVEMEM(machine_name, dummy);

/* uid, gid */
READ_BUF(8);
READ32(sess->uid);
READ32(sess->gid);

/* more gids */
READ_BUF(4);
READ32(dummy);
READ_BUF(dummy * 4);
break;
case RPC_AUTH_GSS:
dprintk("RPC_AUTH_GSS callback secflavor "
"not supported!\n");
READ_BUF(8);
/* gcbp_service */
READ32(dummy);
/* gcbp_handle_from_server */
READ32(dummy);
READ_BUF(dummy);
p += XDR_QUADLEN(dummy);
/* gcbp_handle_from_client */
READ_BUF(4);
READ32(dummy);
READ_BUF(dummy);
break;
default:
dprintk("Illegal callback secflavor\n");
return nfserr_inval;
}
}
nfsd4_decode_cb_sec(argp, &sess->cb_sec);
DECODE_TAIL;
}

Expand Down
9 changes: 7 additions & 2 deletions trunk/fs/nfsd/state.h
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,11 @@ struct nfsd4_channel_attrs {
u32 rdma_attrs;
};

struct nfsd4_cb_sec {
u32 uid;
u32 gid;
};

struct nfsd4_create_session {
clientid_t clientid;
struct nfs4_sessionid sessionid;
Expand All @@ -158,8 +163,7 @@ struct nfsd4_create_session {
struct nfsd4_channel_attrs fore_channel;
struct nfsd4_channel_attrs back_channel;
u32 callback_prog;
u32 uid;
u32 gid;
struct nfsd4_cb_sec cb_sec;
};

struct nfsd4_bind_conn_to_session {
Expand Down Expand Up @@ -192,6 +196,7 @@ struct nfsd4_session {
struct nfs4_sessionid se_sessionid;
struct nfsd4_channel_attrs se_fchannel;
struct nfsd4_channel_attrs se_bchannel;
struct nfsd4_cb_sec se_cb_sec;
struct list_head se_conns;
u32 se_cb_prog;
u32 se_cb_seq_nr;
Expand Down

0 comments on commit c6702df

Please sign in to comment.