* [PATCH 0/2] Clean up handling of event log files @ 2016-10-01 12:41 ` Jarkko Sakkinen 0 siblings, 0 replies; 10+ messages in thread From: Jarkko Sakkinen @ 2016-10-01 12:41 UTC (permalink / raw) To: Peter Huewe Cc: Jarkko Sakkinen, Jason Gunthorpe, open list, moderated list:TPM DEVICE DRIVER Meld a common function for opening measurements files and keep the dentries in a static array. Jarkko Sakkinen (1): tpm: replace dynamically allocated bios_dir with a static array Nayna Jain (1): tpm: define a generic open() method for ascii & bios measurements drivers/char/tpm/tpm-chip.c | 9 +-- drivers/char/tpm/tpm.h | 3 +- drivers/char/tpm/tpm_eventlog.c | 123 ++++++++++++++-------------------------- drivers/char/tpm/tpm_eventlog.h | 10 ++-- 4 files changed, 55 insertions(+), 90 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 0/2] Clean up handling of event log files @ 2016-10-01 12:41 ` Jarkko Sakkinen 0 siblings, 0 replies; 10+ messages in thread From: Jarkko Sakkinen @ 2016-10-01 12:41 UTC (permalink / raw) To: Peter Huewe Cc: Jarkko Sakkinen, Jason Gunthorpe, open list, moderated list:TPM DEVICE DRIVER Meld a common function for opening measurements files and keep the dentries in a static array. Jarkko Sakkinen (1): tpm: replace dynamically allocated bios_dir with a static array Nayna Jain (1): tpm: define a generic open() method for ascii & bios measurements drivers/char/tpm/tpm-chip.c | 9 +-- drivers/char/tpm/tpm.h | 3 +- drivers/char/tpm/tpm_eventlog.c | 123 ++++++++++++++-------------------------- drivers/char/tpm/tpm_eventlog.h | 10 ++-- 4 files changed, 55 insertions(+), 90 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <1475325678-16573-1-git-send-email-jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>]
* [PATCH 1/2] tpm: define a generic open() method for ascii & bios measurements 2016-10-01 12:41 ` Jarkko Sakkinen @ 2016-10-01 12:41 ` Jarkko Sakkinen -1 siblings, 0 replies; 10+ messages in thread From: Jarkko Sakkinen @ 2016-10-01 12:41 UTC (permalink / raw) To: Peter Huewe; +Cc: open list, moderated list:TPM DEVICE DRIVER From: Nayna Jain <nayna-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> open() method for event log ascii and binary bios measurements file operations are very similar. This patch refactors the code into a single open() call by passing seq_operations as i_node->private data. Suggested-by: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org> Signed-off-by: Nayna Jain <nayna-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> Reviewed-by: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org> --- drivers/char/tpm/tpm_eventlog.c | 59 +++++++++-------------------------------- 1 file changed, 13 insertions(+), 46 deletions(-) diff --git a/drivers/char/tpm/tpm_eventlog.c b/drivers/char/tpm/tpm_eventlog.c index e722886..75e6644 100644 --- a/drivers/char/tpm/tpm_eventlog.c +++ b/drivers/char/tpm/tpm_eventlog.c @@ -7,6 +7,7 @@ * Stefan Berger <stefanb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> * Reiner Sailer <sailer-aZOuKsOsJu3MbYB6QlFGEg@public.gmane.org> * Kylene Hall <kjhall-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> + * Nayna Jain <nayna-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> * * Maintained by: <tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org> * @@ -318,12 +319,14 @@ static const struct seq_operations tpm_binary_b_measurments_seqops = { .show = tpm_binary_bios_measurements_show, }; -static int tpm_ascii_bios_measurements_open(struct inode *inode, +static int tpm_bios_measurements_open(struct inode *inode, struct file *file) { int err; struct tpm_bios_log *log; struct seq_file *seq; + const struct seq_operations *seqops = + (const struct seq_operations *)inode->i_private; log = kzalloc(sizeof(struct tpm_bios_log), GFP_KERNEL); if (!log) @@ -333,7 +336,7 @@ static int tpm_ascii_bios_measurements_open(struct inode *inode, goto out_free; /* now register seq file */ - err = seq_open(file, &tpm_ascii_b_measurments_seqops); + err = seq_open(file, seqops); if (!err) { seq = file->private_data; seq->private = log; @@ -349,46 +352,8 @@ out_free: goto out; } -static const struct file_operations tpm_ascii_bios_measurements_ops = { - .open = tpm_ascii_bios_measurements_open, - .read = seq_read, - .llseek = seq_lseek, - .release = tpm_bios_measurements_release, -}; - -static int tpm_binary_bios_measurements_open(struct inode *inode, - struct file *file) -{ - int err; - struct tpm_bios_log *log; - struct seq_file *seq; - - log = kzalloc(sizeof(struct tpm_bios_log), GFP_KERNEL); - if (!log) - return -ENOMEM; - - if ((err = read_log(log))) - goto out_free; - - /* now register seq file */ - err = seq_open(file, &tpm_binary_b_measurments_seqops); - if (!err) { - seq = file->private_data; - seq->private = log; - } else { - goto out_free; - } - -out: - return err; -out_free: - kfree(log->bios_event_log); - kfree(log); - goto out; -} - -static const struct file_operations tpm_binary_bios_measurements_ops = { - .open = tpm_binary_bios_measurements_open, +static const struct file_operations tpm_bios_measurements_ops = { + .open = tpm_bios_measurements_open, .read = seq_read, .llseek = seq_lseek, .release = tpm_bios_measurements_release, @@ -413,15 +378,17 @@ struct dentry **tpm_bios_log_setup(const char *name) bin_file = securityfs_create_file("binary_bios_measurements", - S_IRUSR | S_IRGRP, tpm_dir, NULL, - &tpm_binary_bios_measurements_ops); + S_IRUSR | S_IRGRP, tpm_dir, + (void *)&tpm_binary_b_measurments_seqops, + &tpm_bios_measurements_ops); if (is_bad(bin_file)) goto out_tpm; ascii_file = securityfs_create_file("ascii_bios_measurements", - S_IRUSR | S_IRGRP, tpm_dir, NULL, - &tpm_ascii_bios_measurements_ops); + S_IRUSR | S_IRGRP, tpm_dir, + (void *)&tpm_ascii_b_measurments_seqops, + &tpm_bios_measurements_ops); if (is_bad(ascii_file)) goto out_bin; -- 2.7.4 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 1/2] tpm: define a generic open() method for ascii & bios measurements @ 2016-10-01 12:41 ` Jarkko Sakkinen 0 siblings, 0 replies; 10+ messages in thread From: Jarkko Sakkinen @ 2016-10-01 12:41 UTC (permalink / raw) To: Peter Huewe Cc: Nayna Jain, Marcel Selhorst, Jarkko Sakkinen, Jason Gunthorpe, moderated list:TPM DEVICE DRIVER, open list From: Nayna Jain <nayna@linux.vnet.ibm.com> open() method for event log ascii and binary bios measurements file operations are very similar. This patch refactors the code into a single open() call by passing seq_operations as i_node->private data. Suggested-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> Signed-off-by: Nayna Jain <nayna@linux.vnet.ibm.com> Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> --- drivers/char/tpm/tpm_eventlog.c | 59 +++++++++-------------------------------- 1 file changed, 13 insertions(+), 46 deletions(-) diff --git a/drivers/char/tpm/tpm_eventlog.c b/drivers/char/tpm/tpm_eventlog.c index e722886..75e6644 100644 --- a/drivers/char/tpm/tpm_eventlog.c +++ b/drivers/char/tpm/tpm_eventlog.c @@ -7,6 +7,7 @@ * Stefan Berger <stefanb@us.ibm.com> * Reiner Sailer <sailer@watson.ibm.com> * Kylene Hall <kjhall@us.ibm.com> + * Nayna Jain <nayna@linux.vnet.ibm.com> * * Maintained by: <tpmdd-devel@lists.sourceforge.net> * @@ -318,12 +319,14 @@ static const struct seq_operations tpm_binary_b_measurments_seqops = { .show = tpm_binary_bios_measurements_show, }; -static int tpm_ascii_bios_measurements_open(struct inode *inode, +static int tpm_bios_measurements_open(struct inode *inode, struct file *file) { int err; struct tpm_bios_log *log; struct seq_file *seq; + const struct seq_operations *seqops = + (const struct seq_operations *)inode->i_private; log = kzalloc(sizeof(struct tpm_bios_log), GFP_KERNEL); if (!log) @@ -333,7 +336,7 @@ static int tpm_ascii_bios_measurements_open(struct inode *inode, goto out_free; /* now register seq file */ - err = seq_open(file, &tpm_ascii_b_measurments_seqops); + err = seq_open(file, seqops); if (!err) { seq = file->private_data; seq->private = log; @@ -349,46 +352,8 @@ out_free: goto out; } -static const struct file_operations tpm_ascii_bios_measurements_ops = { - .open = tpm_ascii_bios_measurements_open, - .read = seq_read, - .llseek = seq_lseek, - .release = tpm_bios_measurements_release, -}; - -static int tpm_binary_bios_measurements_open(struct inode *inode, - struct file *file) -{ - int err; - struct tpm_bios_log *log; - struct seq_file *seq; - - log = kzalloc(sizeof(struct tpm_bios_log), GFP_KERNEL); - if (!log) - return -ENOMEM; - - if ((err = read_log(log))) - goto out_free; - - /* now register seq file */ - err = seq_open(file, &tpm_binary_b_measurments_seqops); - if (!err) { - seq = file->private_data; - seq->private = log; - } else { - goto out_free; - } - -out: - return err; -out_free: - kfree(log->bios_event_log); - kfree(log); - goto out; -} - -static const struct file_operations tpm_binary_bios_measurements_ops = { - .open = tpm_binary_bios_measurements_open, +static const struct file_operations tpm_bios_measurements_ops = { + .open = tpm_bios_measurements_open, .read = seq_read, .llseek = seq_lseek, .release = tpm_bios_measurements_release, @@ -413,15 +378,17 @@ struct dentry **tpm_bios_log_setup(const char *name) bin_file = securityfs_create_file("binary_bios_measurements", - S_IRUSR | S_IRGRP, tpm_dir, NULL, - &tpm_binary_bios_measurements_ops); + S_IRUSR | S_IRGRP, tpm_dir, + (void *)&tpm_binary_b_measurments_seqops, + &tpm_bios_measurements_ops); if (is_bad(bin_file)) goto out_tpm; ascii_file = securityfs_create_file("ascii_bios_measurements", - S_IRUSR | S_IRGRP, tpm_dir, NULL, - &tpm_ascii_bios_measurements_ops); + S_IRUSR | S_IRGRP, tpm_dir, + (void *)&tpm_ascii_b_measurments_seqops, + &tpm_bios_measurements_ops); if (is_bad(ascii_file)) goto out_bin; -- 2.7.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2] tpm: replace dynamically allocated bios_dir with a static array 2016-10-01 12:41 ` Jarkko Sakkinen @ 2016-10-01 12:41 ` Jarkko Sakkinen -1 siblings, 0 replies; 10+ messages in thread From: Jarkko Sakkinen @ 2016-10-01 12:41 UTC (permalink / raw) To: Peter Huewe; +Cc: open list, moderated list:TPM DEVICE DRIVER This commit is based on a commit by Nayna Jain. Replaced dynamically allocated bios_dir with a static array as the size is always constant. Suggested-by: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org> Signed-off-by: Nayna Jain <nayna-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> --- drivers/char/tpm/tpm-chip.c | 9 +++--- drivers/char/tpm/tpm.h | 3 +- drivers/char/tpm/tpm_eventlog.c | 62 +++++++++++++++++++---------------------- drivers/char/tpm/tpm_eventlog.h | 10 +++---- 4 files changed, 41 insertions(+), 43 deletions(-) diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c index e595013..a56b609 100644 --- a/drivers/char/tpm/tpm-chip.c +++ b/drivers/char/tpm/tpm-chip.c @@ -278,14 +278,16 @@ static void tpm_del_char_device(struct tpm_chip *chip) static int tpm1_chip_register(struct tpm_chip *chip) { + int rc; + if (chip->flags & TPM_CHIP_FLAG_TPM2) return 0; tpm_sysfs_add_device(chip); - chip->bios_dir = tpm_bios_log_setup(dev_name(&chip->dev)); + rc = tpm_bios_log_setup(chip); - return 0; + return rc; } static void tpm1_chip_unregister(struct tpm_chip *chip) @@ -293,8 +295,7 @@ static void tpm1_chip_unregister(struct tpm_chip *chip) if (chip->flags & TPM_CHIP_FLAG_TPM2) return; - if (chip->bios_dir) - tpm_bios_log_teardown(chip->bios_dir); + tpm_bios_log_teardown(chip); } static void tpm_del_legacy_sysfs(struct tpm_chip *chip) diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h index 4d183c9..c8ce0df 100644 --- a/drivers/char/tpm/tpm.h +++ b/drivers/char/tpm/tpm.h @@ -40,6 +40,7 @@ enum tpm_const { TPM_BUFSIZE = 4096, TPM_NUM_DEVICES = 65536, TPM_RETRY = 50, /* 5 seconds */ + TPM_NUM_EVENT_LOG_FILES = 3, }; enum tpm_timeout { @@ -171,7 +172,7 @@ struct tpm_chip { unsigned long duration[3]; /* jiffies */ bool duration_adjusted; - struct dentry **bios_dir; + struct dentry *bios_dir[TPM_EVENT_LOG_FILES]; const struct attribute_group *groups[3]; unsigned int groups_cnt; diff --git a/drivers/char/tpm/tpm_eventlog.c b/drivers/char/tpm/tpm_eventlog.c index 75e6644..5138956 100644 --- a/drivers/char/tpm/tpm_eventlog.c +++ b/drivers/char/tpm/tpm_eventlog.c @@ -368,54 +368,50 @@ static int is_bad(void *p) return 0; } -struct dentry **tpm_bios_log_setup(const char *name) +int tpm_bios_log_setup(struct tpm_chip *chip) { - struct dentry **ret = NULL, *tpm_dir, *bin_file, *ascii_file; + const char *name = dev_name(&chip->dev); + unsigned int cnt; - tpm_dir = securityfs_create_dir(name, NULL); - if (is_bad(tpm_dir)) - goto out; + cnt = 0; + chip->bios_dir[cnt] = + securityfs_create_dir(name, NULL); + if (is_bad(chip->bios_dir[cnt])) + goto err; + cnt++; - bin_file = + chip->bios_dir[cnt] = securityfs_create_file("binary_bios_measurements", - S_IRUSR | S_IRGRP, tpm_dir, + S_IRUSR | S_IRGRP, chip->bios_dir[cnt], (void *)&tpm_binary_b_measurments_seqops, &tpm_bios_measurements_ops); - if (is_bad(bin_file)) - goto out_tpm; + if (is_bad(chip->bios_dir[cnt])) + goto err; + cnt++; - ascii_file = + chip->bios_dir[cnt] = securityfs_create_file("ascii_bios_measurements", - S_IRUSR | S_IRGRP, tpm_dir, + S_IRUSR | S_IRGRP, chip->bios_dir[cnt], (void *)&tpm_ascii_b_measurments_seqops, &tpm_bios_measurements_ops); - if (is_bad(ascii_file)) - goto out_bin; + if (is_bad(chip->bios_dir[cnt])) + goto err; + cnt++; - ret = kmalloc(3 * sizeof(struct dentry *), GFP_KERNEL); - if (!ret) - goto out_ascii; - - ret[0] = ascii_file; - ret[1] = bin_file; - ret[2] = tpm_dir; - - return ret; + return 0; -out_ascii: - securityfs_remove(ascii_file); -out_bin: - securityfs_remove(bin_file); -out_tpm: - securityfs_remove(tpm_dir); -out: - return NULL; +err: + chip->bios_dir[cnt] = NULL; + tpm_bios_log_teardown(chip); + return -EIO; } -void tpm_bios_log_teardown(struct dentry **lst) +void tpm_bios_log_teardown(struct tpm_chip *chip) { int i; - for (i = 0; i < 3; i++) - securityfs_remove(lst[i]); + for (i = (TPM_NUM_EVENT_LOG_FILES - 1); i >= 0; i--) { + if (chip->bios_dir[i]) + securityfs_remove(chip->bios_dir[i]); + } } diff --git a/drivers/char/tpm/tpm_eventlog.h b/drivers/char/tpm/tpm_eventlog.h index 8de62b0..fd3357e 100644 --- a/drivers/char/tpm/tpm_eventlog.h +++ b/drivers/char/tpm/tpm_eventlog.h @@ -77,14 +77,14 @@ int read_log(struct tpm_bios_log *log); #if defined(CONFIG_TCG_IBMVTPM) || defined(CONFIG_TCG_IBMVTPM_MODULE) || \ defined(CONFIG_ACPI) -extern struct dentry **tpm_bios_log_setup(const char *); -extern void tpm_bios_log_teardown(struct dentry **); +extern int tpm_bios_log_setup(struct tpm_chip *chip); +extern void tpm_bios_log_teardown(struct tpm_chip *chip); #else -static inline struct dentry **tpm_bios_log_setup(const char *name) +static inline int tpm_bios_log_setup(struct tpm_chip *chip) { - return NULL; + return 0; } -static inline void tpm_bios_log_teardown(struct dentry **dir) +static inline void tpm_bios_log_teardown(struct tpm_chip *chip) { } #endif -- 2.7.4 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2] tpm: replace dynamically allocated bios_dir with a static array @ 2016-10-01 12:41 ` Jarkko Sakkinen 0 siblings, 0 replies; 10+ messages in thread From: Jarkko Sakkinen @ 2016-10-01 12:41 UTC (permalink / raw) To: Peter Huewe Cc: Jarkko Sakkinen, Nayna Jain, Marcel Selhorst, Jason Gunthorpe, moderated list:TPM DEVICE DRIVER, open list This commit is based on a commit by Nayna Jain. Replaced dynamically allocated bios_dir with a static array as the size is always constant. Suggested-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> Signed-off-by: Nayna Jain <nayna@linux.vnet.ibm.com> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> --- drivers/char/tpm/tpm-chip.c | 9 +++--- drivers/char/tpm/tpm.h | 3 +- drivers/char/tpm/tpm_eventlog.c | 62 +++++++++++++++++++---------------------- drivers/char/tpm/tpm_eventlog.h | 10 +++---- 4 files changed, 41 insertions(+), 43 deletions(-) diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c index e595013..a56b609 100644 --- a/drivers/char/tpm/tpm-chip.c +++ b/drivers/char/tpm/tpm-chip.c @@ -278,14 +278,16 @@ static void tpm_del_char_device(struct tpm_chip *chip) static int tpm1_chip_register(struct tpm_chip *chip) { + int rc; + if (chip->flags & TPM_CHIP_FLAG_TPM2) return 0; tpm_sysfs_add_device(chip); - chip->bios_dir = tpm_bios_log_setup(dev_name(&chip->dev)); + rc = tpm_bios_log_setup(chip); - return 0; + return rc; } static void tpm1_chip_unregister(struct tpm_chip *chip) @@ -293,8 +295,7 @@ static void tpm1_chip_unregister(struct tpm_chip *chip) if (chip->flags & TPM_CHIP_FLAG_TPM2) return; - if (chip->bios_dir) - tpm_bios_log_teardown(chip->bios_dir); + tpm_bios_log_teardown(chip); } static void tpm_del_legacy_sysfs(struct tpm_chip *chip) diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h index 4d183c9..c8ce0df 100644 --- a/drivers/char/tpm/tpm.h +++ b/drivers/char/tpm/tpm.h @@ -40,6 +40,7 @@ enum tpm_const { TPM_BUFSIZE = 4096, TPM_NUM_DEVICES = 65536, TPM_RETRY = 50, /* 5 seconds */ + TPM_NUM_EVENT_LOG_FILES = 3, }; enum tpm_timeout { @@ -171,7 +172,7 @@ struct tpm_chip { unsigned long duration[3]; /* jiffies */ bool duration_adjusted; - struct dentry **bios_dir; + struct dentry *bios_dir[TPM_EVENT_LOG_FILES]; const struct attribute_group *groups[3]; unsigned int groups_cnt; diff --git a/drivers/char/tpm/tpm_eventlog.c b/drivers/char/tpm/tpm_eventlog.c index 75e6644..5138956 100644 --- a/drivers/char/tpm/tpm_eventlog.c +++ b/drivers/char/tpm/tpm_eventlog.c @@ -368,54 +368,50 @@ static int is_bad(void *p) return 0; } -struct dentry **tpm_bios_log_setup(const char *name) +int tpm_bios_log_setup(struct tpm_chip *chip) { - struct dentry **ret = NULL, *tpm_dir, *bin_file, *ascii_file; + const char *name = dev_name(&chip->dev); + unsigned int cnt; - tpm_dir = securityfs_create_dir(name, NULL); - if (is_bad(tpm_dir)) - goto out; + cnt = 0; + chip->bios_dir[cnt] = + securityfs_create_dir(name, NULL); + if (is_bad(chip->bios_dir[cnt])) + goto err; + cnt++; - bin_file = + chip->bios_dir[cnt] = securityfs_create_file("binary_bios_measurements", - S_IRUSR | S_IRGRP, tpm_dir, + S_IRUSR | S_IRGRP, chip->bios_dir[cnt], (void *)&tpm_binary_b_measurments_seqops, &tpm_bios_measurements_ops); - if (is_bad(bin_file)) - goto out_tpm; + if (is_bad(chip->bios_dir[cnt])) + goto err; + cnt++; - ascii_file = + chip->bios_dir[cnt] = securityfs_create_file("ascii_bios_measurements", - S_IRUSR | S_IRGRP, tpm_dir, + S_IRUSR | S_IRGRP, chip->bios_dir[cnt], (void *)&tpm_ascii_b_measurments_seqops, &tpm_bios_measurements_ops); - if (is_bad(ascii_file)) - goto out_bin; + if (is_bad(chip->bios_dir[cnt])) + goto err; + cnt++; - ret = kmalloc(3 * sizeof(struct dentry *), GFP_KERNEL); - if (!ret) - goto out_ascii; - - ret[0] = ascii_file; - ret[1] = bin_file; - ret[2] = tpm_dir; - - return ret; + return 0; -out_ascii: - securityfs_remove(ascii_file); -out_bin: - securityfs_remove(bin_file); -out_tpm: - securityfs_remove(tpm_dir); -out: - return NULL; +err: + chip->bios_dir[cnt] = NULL; + tpm_bios_log_teardown(chip); + return -EIO; } -void tpm_bios_log_teardown(struct dentry **lst) +void tpm_bios_log_teardown(struct tpm_chip *chip) { int i; - for (i = 0; i < 3; i++) - securityfs_remove(lst[i]); + for (i = (TPM_NUM_EVENT_LOG_FILES - 1); i >= 0; i--) { + if (chip->bios_dir[i]) + securityfs_remove(chip->bios_dir[i]); + } } diff --git a/drivers/char/tpm/tpm_eventlog.h b/drivers/char/tpm/tpm_eventlog.h index 8de62b0..fd3357e 100644 --- a/drivers/char/tpm/tpm_eventlog.h +++ b/drivers/char/tpm/tpm_eventlog.h @@ -77,14 +77,14 @@ int read_log(struct tpm_bios_log *log); #if defined(CONFIG_TCG_IBMVTPM) || defined(CONFIG_TCG_IBMVTPM_MODULE) || \ defined(CONFIG_ACPI) -extern struct dentry **tpm_bios_log_setup(const char *); -extern void tpm_bios_log_teardown(struct dentry **); +extern int tpm_bios_log_setup(struct tpm_chip *chip); +extern void tpm_bios_log_teardown(struct tpm_chip *chip); #else -static inline struct dentry **tpm_bios_log_setup(const char *name) +static inline int tpm_bios_log_setup(struct tpm_chip *chip) { - return NULL; + return 0; } -static inline void tpm_bios_log_teardown(struct dentry **dir) +static inline void tpm_bios_log_teardown(struct tpm_chip *chip) { } #endif -- 2.7.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] tpm: replace dynamically allocated bios_dir with a static array 2016-10-01 12:41 ` Jarkko Sakkinen (?) @ 2016-10-01 16:49 ` Jason Gunthorpe 2016-10-01 19:22 ` Jarkko Sakkinen -1 siblings, 1 reply; 10+ messages in thread From: Jason Gunthorpe @ 2016-10-01 16:49 UTC (permalink / raw) To: Jarkko Sakkinen Cc: Peter Huewe, Nayna Jain, Marcel Selhorst, moderated list:TPM DEVICE DRIVER, open list On Sat, Oct 01, 2016 at 03:41:17PM +0300, Jarkko Sakkinen wrote: > - bin_file = > + chip->bios_dir[cnt] = > securityfs_create_file("binary_bios_measurements", > - S_IRUSR | S_IRGRP, tpm_dir, > + S_IRUSR | S_IRGRP, chip->bios_dir[cnt], That is certainly not right, Nayna's version was correct, the function argument is the directory to create under and bios_dir[0] is setup as the directory for tpm. This is also why removal is done in reverse order, files are removed then the directory that contains them. Jason ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] tpm: replace dynamically allocated bios_dir with a static array 2016-10-01 16:49 ` Jason Gunthorpe @ 2016-10-01 19:22 ` Jarkko Sakkinen 0 siblings, 0 replies; 10+ messages in thread From: Jarkko Sakkinen @ 2016-10-01 19:22 UTC (permalink / raw) To: Jason Gunthorpe Cc: Peter Huewe, Nayna Jain, Marcel Selhorst, moderated list:TPM DEVICE DRIVER, open list On Sat, Oct 01, 2016 at 10:49:32AM -0600, Jason Gunthorpe wrote: > On Sat, Oct 01, 2016 at 03:41:17PM +0300, Jarkko Sakkinen wrote: > > - bin_file = > > + chip->bios_dir[cnt] = > > securityfs_create_file("binary_bios_measurements", > > - S_IRUSR | S_IRGRP, tpm_dir, > > + S_IRUSR | S_IRGRP, chip->bios_dir[cnt], > > That is certainly not right, Nayna's version was correct, the function > argument is the directory to create under and bios_dir[0] is setup as the > directory for tpm. This is also why removal is done in reverse order, > files are removed then the directory that contains them. Right. I overlooked this. > Jason /Jarkko ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/2] Clean up handling of event log files 2016-10-01 12:41 ` Jarkko Sakkinen @ 2016-10-01 12:44 ` Jarkko Sakkinen -1 siblings, 0 replies; 10+ messages in thread From: Jarkko Sakkinen @ 2016-10-01 12:44 UTC (permalink / raw) To: Peter Huewe; +Cc: moderated list:TPM DEVICE DRIVER, open list Please ignore this version. I was going to do a '--dry-run'. Sorry :( Doing resend later on once I've tested the changes. /Jarkko On Sat, Oct 01, 2016 at 03:41:15PM +0300, Jarkko Sakkinen wrote: > Meld a common function for opening measurements files and keep the > dentries in a static array. > > Jarkko Sakkinen (1): > tpm: replace dynamically allocated bios_dir with a static array > > Nayna Jain (1): > tpm: define a generic open() method for ascii & bios measurements > > drivers/char/tpm/tpm-chip.c | 9 +-- > drivers/char/tpm/tpm.h | 3 +- > drivers/char/tpm/tpm_eventlog.c | 123 ++++++++++++++-------------------------- > drivers/char/tpm/tpm_eventlog.h | 10 ++-- > 4 files changed, 55 insertions(+), 90 deletions(-) > > -- > 2.7.4 > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/2] Clean up handling of event log files @ 2016-10-01 12:44 ` Jarkko Sakkinen 0 siblings, 0 replies; 10+ messages in thread From: Jarkko Sakkinen @ 2016-10-01 12:44 UTC (permalink / raw) To: Peter Huewe; +Cc: Jason Gunthorpe, open list, moderated list:TPM DEVICE DRIVER Please ignore this version. I was going to do a '--dry-run'. Sorry :( Doing resend later on once I've tested the changes. /Jarkko On Sat, Oct 01, 2016 at 03:41:15PM +0300, Jarkko Sakkinen wrote: > Meld a common function for opening measurements files and keep the > dentries in a static array. > > Jarkko Sakkinen (1): > tpm: replace dynamically allocated bios_dir with a static array > > Nayna Jain (1): > tpm: define a generic open() method for ascii & bios measurements > > drivers/char/tpm/tpm-chip.c | 9 +-- > drivers/char/tpm/tpm.h | 3 +- > drivers/char/tpm/tpm_eventlog.c | 123 ++++++++++++++-------------------------- > drivers/char/tpm/tpm_eventlog.h | 10 ++-- > 4 files changed, 55 insertions(+), 90 deletions(-) > > -- > 2.7.4 > ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2016-10-01 19:22 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-01 12:41 [PATCH 0/2] Clean up handling of event log files Jarkko Sakkinen
2016-10-01 12:41 ` Jarkko Sakkinen
[not found] ` <1475325678-16573-1-git-send-email-jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-10-01 12:41 ` [PATCH 1/2] tpm: define a generic open() method for ascii & bios measurements Jarkko Sakkinen
2016-10-01 12:41 ` Jarkko Sakkinen
2016-10-01 12:41 ` [PATCH 2/2] tpm: replace dynamically allocated bios_dir with a static array Jarkko Sakkinen
2016-10-01 12:41 ` Jarkko Sakkinen
2016-10-01 16:49 ` Jason Gunthorpe
2016-10-01 19:22 ` Jarkko Sakkinen
2016-10-01 12:44 ` [PATCH 0/2] Clean up handling of event log files Jarkko Sakkinen
2016-10-01 12:44 ` Jarkko Sakkinen
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.