Commit c3d477a7 authored by Tadeusz Struk's avatar Tadeusz Struk Committed by Jarkko Sakkinen

tpm: add ptr to the tpm_space struct to file_priv

Add a ptr to struct tpm_space to the file_priv and consolidate
of the write operations for the two interfaces.
Signed-off-by: default avatarTadeusz Struk <tadeusz.struk@intel.com>
Tested-by: default avatarPhilip Tricca <philip.b.tricca@intel.com>
Reviewed-by: default avatarJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off--by: default avatarJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
parent 2f7d8dbb
...@@ -43,9 +43,11 @@ static void timeout_work(struct work_struct *work) ...@@ -43,9 +43,11 @@ static void timeout_work(struct work_struct *work)
} }
void tpm_common_open(struct file *file, struct tpm_chip *chip, void tpm_common_open(struct file *file, struct tpm_chip *chip,
struct file_priv *priv) struct file_priv *priv, struct tpm_space *space)
{ {
priv->chip = chip; priv->chip = chip;
priv->space = space;
mutex_init(&priv->buffer_mutex); mutex_init(&priv->buffer_mutex);
timer_setup(&priv->user_read_timer, user_reader_timeout, 0); timer_setup(&priv->user_read_timer, user_reader_timeout, 0);
INIT_WORK(&priv->work, timeout_work); INIT_WORK(&priv->work, timeout_work);
...@@ -79,7 +81,7 @@ ssize_t tpm_common_read(struct file *file, char __user *buf, ...@@ -79,7 +81,7 @@ ssize_t tpm_common_read(struct file *file, char __user *buf,
} }
ssize_t tpm_common_write(struct file *file, const char __user *buf, ssize_t tpm_common_write(struct file *file, const char __user *buf,
size_t size, loff_t *off, struct tpm_space *space) size_t size, loff_t *off)
{ {
struct file_priv *priv = file->private_data; struct file_priv *priv = file->private_data;
size_t in_size = size; size_t in_size = size;
...@@ -119,7 +121,7 @@ ssize_t tpm_common_write(struct file *file, const char __user *buf, ...@@ -119,7 +121,7 @@ ssize_t tpm_common_write(struct file *file, const char __user *buf,
mutex_unlock(&priv->buffer_mutex); mutex_unlock(&priv->buffer_mutex);
return -EPIPE; return -EPIPE;
} }
out_size = tpm_transmit(priv->chip, space, priv->data_buffer, out_size = tpm_transmit(priv->chip, priv->space, priv->data_buffer,
sizeof(priv->data_buffer), 0); sizeof(priv->data_buffer), 0);
tpm_put_ops(priv->chip); tpm_put_ops(priv->chip);
......
...@@ -39,7 +39,7 @@ static int tpm_open(struct inode *inode, struct file *file) ...@@ -39,7 +39,7 @@ static int tpm_open(struct inode *inode, struct file *file)
if (priv == NULL) if (priv == NULL)
goto out; goto out;
tpm_common_open(file, chip, priv); tpm_common_open(file, chip, priv, NULL);
return 0; return 0;
...@@ -48,12 +48,6 @@ static int tpm_open(struct inode *inode, struct file *file) ...@@ -48,12 +48,6 @@ static int tpm_open(struct inode *inode, struct file *file)
return -ENOMEM; return -ENOMEM;
} }
static ssize_t tpm_write(struct file *file, const char __user *buf,
size_t size, loff_t *off)
{
return tpm_common_write(file, buf, size, off, NULL);
}
/* /*
* Called on file close * Called on file close
*/ */
...@@ -73,6 +67,6 @@ const struct file_operations tpm_fops = { ...@@ -73,6 +67,6 @@ const struct file_operations tpm_fops = {
.llseek = no_llseek, .llseek = no_llseek,
.open = tpm_open, .open = tpm_open,
.read = tpm_common_read, .read = tpm_common_read,
.write = tpm_write, .write = tpm_common_write,
.release = tpm_release, .release = tpm_release,
}; };
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
struct file_priv { struct file_priv {
struct tpm_chip *chip; struct tpm_chip *chip;
struct tpm_space *space;
/* Data passed to and from the tpm via the read/write calls */ /* Data passed to and from the tpm via the read/write calls */
size_t data_pending; size_t data_pending;
...@@ -18,11 +19,11 @@ struct file_priv { ...@@ -18,11 +19,11 @@ struct file_priv {
}; };
void tpm_common_open(struct file *file, struct tpm_chip *chip, void tpm_common_open(struct file *file, struct tpm_chip *chip,
struct file_priv *priv); struct file_priv *priv, struct tpm_space *space);
ssize_t tpm_common_read(struct file *file, char __user *buf, ssize_t tpm_common_read(struct file *file, char __user *buf,
size_t size, loff_t *off); size_t size, loff_t *off);
ssize_t tpm_common_write(struct file *file, const char __user *buf, ssize_t tpm_common_write(struct file *file, const char __user *buf,
size_t size, loff_t *off, struct tpm_space *space); size_t size, loff_t *off);
void tpm_common_release(struct file *file, struct file_priv *priv); void tpm_common_release(struct file *file, struct file_priv *priv);
#endif #endif
...@@ -28,7 +28,7 @@ static int tpmrm_open(struct inode *inode, struct file *file) ...@@ -28,7 +28,7 @@ static int tpmrm_open(struct inode *inode, struct file *file)
return -ENOMEM; return -ENOMEM;
} }
tpm_common_open(file, chip, &priv->priv); tpm_common_open(file, chip, &priv->priv, &priv->space);
return 0; return 0;
} }
...@@ -45,21 +45,11 @@ static int tpmrm_release(struct inode *inode, struct file *file) ...@@ -45,21 +45,11 @@ static int tpmrm_release(struct inode *inode, struct file *file)
return 0; return 0;
} }
static ssize_t tpmrm_write(struct file *file, const char __user *buf,
size_t size, loff_t *off)
{
struct file_priv *fpriv = file->private_data;
struct tpmrm_priv *priv = container_of(fpriv, struct tpmrm_priv, priv);
return tpm_common_write(file, buf, size, off, &priv->space);
}
const struct file_operations tpmrm_fops = { const struct file_operations tpmrm_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.llseek = no_llseek, .llseek = no_llseek,
.open = tpmrm_open, .open = tpmrm_open,
.read = tpm_common_read, .read = tpm_common_read,
.write = tpmrm_write, .write = tpm_common_write,
.release = tpmrm_release, .release = tpmrm_release,
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment