Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[pandora-kernel.git] / drivers / media / dvb / firewire / firedtv-avc.c
index fc5ccd8..489ae82 100644 (file)
@@ -1208,7 +1208,7 @@ int avc_ca_pmt(struct firedtv *fdtv, char *msg, int length)
        if (r->response != AVC_RESPONSE_ACCEPTED) {
                dev_err(fdtv->device,
                        "CA PMT failed with response 0x%x\n", r->response);
-               ret = -EFAULT;
+               ret = -EACCES;
        }
 out:
        mutex_unlock(&fdtv->avc_mutex);
@@ -1320,14 +1320,10 @@ static int cmp_read(struct firedtv *fdtv, u64 addr, __be32 *data)
 {
        int ret;
 
-       mutex_lock(&fdtv->avc_mutex);
-
        ret = fdtv_read(fdtv, addr, data);
        if (ret < 0)
                dev_err(fdtv->device, "CMP: read I/O error\n");
 
-       mutex_unlock(&fdtv->avc_mutex);
-
        return ret;
 }
 
@@ -1335,18 +1331,9 @@ static int cmp_lock(struct firedtv *fdtv, u64 addr, __be32 data[])
 {
        int ret;
 
-       mutex_lock(&fdtv->avc_mutex);
-
-       /* data[] is stack-allocated and should not be DMA-mapped. */
-       memcpy(fdtv->avc_data, data, 8);
-
-       ret = fdtv_lock(fdtv, addr, fdtv->avc_data);
+       ret = fdtv_lock(fdtv, addr, data);
        if (ret < 0)
                dev_err(fdtv->device, "CMP: lock I/O error\n");
-       else
-               memcpy(data, fdtv->avc_data, 8);
-
-       mutex_unlock(&fdtv->avc_mutex);
 
        return ret;
 }