mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
Merge branch 'master' into for-next
Fast-forwarded to current state of Linus' tree as there are patches to be applied for files that didn't exist on the old branch.
This commit is contained in:
commit
07f9479a40
6039 changed files with 191389 additions and 81783 deletions
|
|
@ -427,7 +427,7 @@ static int
|
|||
context_derive_keys_rc4(struct krb5_ctx *ctx)
|
||||
{
|
||||
struct crypto_hash *hmac;
|
||||
static const char sigkeyconstant[] = "signaturekey";
|
||||
char sigkeyconstant[] = "signaturekey";
|
||||
int slen = strlen(sigkeyconstant) + 1; /* include null terminator */
|
||||
struct hash_desc desc;
|
||||
struct scatterlist sg[1];
|
||||
|
|
|
|||
|
|
@ -160,6 +160,28 @@ gss_mech_get_by_name(const char *name)
|
|||
|
||||
EXPORT_SYMBOL_GPL(gss_mech_get_by_name);
|
||||
|
||||
struct gss_api_mech *
|
||||
gss_mech_get_by_OID(struct xdr_netobj *obj)
|
||||
{
|
||||
struct gss_api_mech *pos, *gm = NULL;
|
||||
|
||||
spin_lock(®istered_mechs_lock);
|
||||
list_for_each_entry(pos, ®istered_mechs, gm_list) {
|
||||
if (obj->len == pos->gm_oid.len) {
|
||||
if (0 == memcmp(obj->data, pos->gm_oid.data, obj->len)) {
|
||||
if (try_module_get(pos->gm_owner))
|
||||
gm = pos;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
spin_unlock(®istered_mechs_lock);
|
||||
return gm;
|
||||
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(gss_mech_get_by_OID);
|
||||
|
||||
static inline int
|
||||
mech_supports_pseudoflavor(struct gss_api_mech *gm, u32 pseudoflavor)
|
||||
{
|
||||
|
|
@ -193,6 +215,22 @@ gss_mech_get_by_pseudoflavor(u32 pseudoflavor)
|
|||
|
||||
EXPORT_SYMBOL_GPL(gss_mech_get_by_pseudoflavor);
|
||||
|
||||
int gss_mech_list_pseudoflavors(rpc_authflavor_t *array_ptr)
|
||||
{
|
||||
struct gss_api_mech *pos = NULL;
|
||||
int i = 0;
|
||||
|
||||
spin_lock(®istered_mechs_lock);
|
||||
list_for_each_entry(pos, ®istered_mechs, gm_list) {
|
||||
array_ptr[i] = pos->gm_pfs->pseudoflavor;
|
||||
i++;
|
||||
}
|
||||
spin_unlock(®istered_mechs_lock);
|
||||
return i;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(gss_mech_list_pseudoflavors);
|
||||
|
||||
u32
|
||||
gss_svc_to_pseudoflavor(struct gss_api_mech *gm, u32 service)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1101,7 +1101,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp, __be32 *authp)
|
|||
|
||||
/* credential is:
|
||||
* version(==1), proc(0,1,2,3), seq, service (1,2,3), handle
|
||||
* at least 5 u32s, and is preceeded by length, so that makes 6.
|
||||
* at least 5 u32s, and is preceded by length, so that makes 6.
|
||||
*/
|
||||
|
||||
if (argv->iov_len < 5 * 4)
|
||||
|
|
|
|||
|
|
@ -860,8 +860,10 @@ static void rpc_release_resources_task(struct rpc_task *task)
|
|||
{
|
||||
if (task->tk_rqstp)
|
||||
xprt_release(task);
|
||||
if (task->tk_msg.rpc_cred)
|
||||
if (task->tk_msg.rpc_cred) {
|
||||
put_rpccred(task->tk_msg.rpc_cred);
|
||||
task->tk_msg.rpc_cred = NULL;
|
||||
}
|
||||
rpc_task_release_client(task);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,6 +38,14 @@ struct unix_domain {
|
|||
|
||||
extern struct auth_ops svcauth_unix;
|
||||
|
||||
static void svcauth_unix_domain_release(struct auth_domain *dom)
|
||||
{
|
||||
struct unix_domain *ud = container_of(dom, struct unix_domain, h);
|
||||
|
||||
kfree(dom->name);
|
||||
kfree(ud);
|
||||
}
|
||||
|
||||
struct auth_domain *unix_domain_find(char *name)
|
||||
{
|
||||
struct auth_domain *rv;
|
||||
|
|
@ -47,7 +55,7 @@ struct auth_domain *unix_domain_find(char *name)
|
|||
while(1) {
|
||||
if (rv) {
|
||||
if (new && rv != &new->h)
|
||||
auth_domain_put(&new->h);
|
||||
svcauth_unix_domain_release(&new->h);
|
||||
|
||||
if (rv->flavour != &svcauth_unix) {
|
||||
auth_domain_put(rv);
|
||||
|
|
@ -74,14 +82,6 @@ struct auth_domain *unix_domain_find(char *name)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(unix_domain_find);
|
||||
|
||||
static void svcauth_unix_domain_release(struct auth_domain *dom)
|
||||
{
|
||||
struct unix_domain *ud = container_of(dom, struct unix_domain, h);
|
||||
|
||||
kfree(dom->name);
|
||||
kfree(ud);
|
||||
}
|
||||
|
||||
|
||||
/**************************************************
|
||||
* cache for IP address to unix_domain
|
||||
|
|
|
|||
|
|
@ -504,7 +504,7 @@ static int xs_nospace(struct rpc_task *task)
|
|||
* EAGAIN: The socket was blocked, please call again later to
|
||||
* complete the request
|
||||
* ENOTCONN: Caller needs to invoke connect logic then call again
|
||||
* other: Some other error occured, the request was not sent
|
||||
* other: Some other error occurred, the request was not sent
|
||||
*/
|
||||
static int xs_udp_send_request(struct rpc_task *task)
|
||||
{
|
||||
|
|
@ -590,7 +590,7 @@ static inline void xs_encode_tcp_record_marker(struct xdr_buf *buf)
|
|||
* EAGAIN: The socket was blocked, please call again later to
|
||||
* complete the request
|
||||
* ENOTCONN: Caller needs to invoke connect logic then call again
|
||||
* other: Some other error occured, the request was not sent
|
||||
* other: Some other error occurred, the request was not sent
|
||||
*
|
||||
* XXX: In the case of soft timeouts, should we eventually give up
|
||||
* if sendmsg is not able to make progress?
|
||||
|
|
@ -710,6 +710,8 @@ static void xs_reset_transport(struct sock_xprt *transport)
|
|||
if (sk == NULL)
|
||||
return;
|
||||
|
||||
transport->srcport = 0;
|
||||
|
||||
write_lock_bh(&sk->sk_callback_lock);
|
||||
transport->inet = NULL;
|
||||
transport->sock = NULL;
|
||||
|
|
|
|||
Loading…
Reference in a new issue