From: Andrew Morton These functions return ERR_PTR()s on error, not NULL. Spotted by Randy. Cc: Serge Hallyn Cc: Kylene Jo Hall Cc: "Randy.Dunlap" Cc: Greg KH Signed-off-by: Andrew Morton --- drivers/char/tpm/tpm_bios.c | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-) diff -puN drivers/char/tpm/tpm_bios.c~tpm_bios-securityfs-error-checking-fix drivers/char/tpm/tpm_bios.c --- devel/drivers/char/tpm/tpm_bios.c~tpm_bios-securityfs-error-checking-fix 2006-01-19 22:43:58.000000000 -0800 +++ devel-akpm/drivers/char/tpm/tpm_bios.c 2006-01-19 22:45:50.000000000 -0800 @@ -487,26 +487,35 @@ struct file_operations tpm_binary_bios_m .release = tpm_bios_measurements_release, }; +static int is_bad(void *p) +{ + if (!p) + return 1; + if (IS_ERR(p) && (PTR_ERR(p) != -ENODEV)) + return 1; + return 0; +} + struct dentry **tpm_bios_log_setup(char *name) { struct dentry **ret = NULL, *tpm_dir, *bin_file, *ascii_file; tpm_dir = securityfs_create_dir(name, NULL); - if (!tpm_dir) + if (is_bad(tpm_dir)) goto out; bin_file = securityfs_create_file("binary_bios_measurements", S_IRUSR | S_IRGRP, tpm_dir, NULL, &tpm_binary_bios_measurements_ops); - if (!bin_file) + 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); - if (!ascii_file) + if (is_bad(ascii_file)) goto out_bin; ret = kmalloc(3 * sizeof(struct dentry *), GFP_KERNEL); _