aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
authorMarkus Pargmann <mpa@pengutronix.de>2015-10-24 15:15:34 -0400
committerMarkus Pargmann <mpa@pengutronix.de>2016-02-03 05:02:56 -0500
commit27ea43fe2a32f63bb6f442dafc2133232b8af4a6 (patch)
tree145cf78515bd373bc9ccbd56772590890ef006cf /drivers/block
parent92e963f50fc74041b5e9e744c330dca48e04f08d (diff)
nbd: Fix debugfs error handling
Static checker complains about the implemented error handling. It is indeed wrong. We don't care about the return values of created debugfs files. We only have to check the return values of created dirs for NULL pointer. If we use a null pointer as parent directory for files, this may lead to debugfs files in wrong places. Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/nbd.c55
1 files changed, 14 insertions, 41 deletions
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index e4c5cc107934..d61a04155d99 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -892,50 +892,23 @@ static const struct file_operations nbd_dbg_flags_ops = {
892static int nbd_dev_dbg_init(struct nbd_device *nbd) 892static int nbd_dev_dbg_init(struct nbd_device *nbd)
893{ 893{
894 struct dentry *dir; 894 struct dentry *dir;
895 struct dentry *f; 895
896 if (!nbd_dbg_dir)
897 return -EIO;
896 898
897 dir = debugfs_create_dir(nbd_name(nbd), nbd_dbg_dir); 899 dir = debugfs_create_dir(nbd_name(nbd), nbd_dbg_dir);
898 if (IS_ERR_OR_NULL(dir)) { 900 if (!dir) {
899 dev_err(nbd_to_dev(nbd), "Failed to create debugfs dir for '%s' (%ld)\n", 901 dev_err(nbd_to_dev(nbd), "Failed to create debugfs dir for '%s'\n",
900 nbd_name(nbd), PTR_ERR(dir)); 902 nbd_name(nbd));
901 return PTR_ERR(dir); 903 return -EIO;
902 } 904 }
903 nbd->dbg_dir = dir; 905 nbd->dbg_dir = dir;
904 906
905 f = debugfs_create_file("tasks", 0444, dir, nbd, &nbd_dbg_tasks_ops); 907 debugfs_create_file("tasks", 0444, dir, nbd, &nbd_dbg_tasks_ops);
906 if (IS_ERR_OR_NULL(f)) { 908 debugfs_create_u64("size_bytes", 0444, dir, &nbd->bytesize);
907 dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 'tasks', %ld\n", 909 debugfs_create_u32("timeout", 0444, dir, &nbd->xmit_timeout);
908 PTR_ERR(f)); 910 debugfs_create_u32("blocksize", 0444, dir, &nbd->blksize);
909 return PTR_ERR(f); 911 debugfs_create_file("flags", 0444, dir, &nbd, &nbd_dbg_flags_ops);
910 }
911
912 f = debugfs_create_u64("size_bytes", 0444, dir, &nbd->bytesize);
913 if (IS_ERR_OR_NULL(f)) {
914 dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 'size_bytes', %ld\n",
915 PTR_ERR(f));
916 return PTR_ERR(f);
917 }
918
919 f = debugfs_create_u32("timeout", 0444, dir, &nbd->xmit_timeout);
920 if (IS_ERR_OR_NULL(f)) {
921 dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 'timeout', %ld\n",
922 PTR_ERR(f));
923 return PTR_ERR(f);
924 }
925
926 f = debugfs_create_u32("blocksize", 0444, dir, &nbd->blksize);
927 if (IS_ERR_OR_NULL(f)) {
928 dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 'blocksize', %ld\n",
929 PTR_ERR(f));
930 return PTR_ERR(f);
931 }
932
933 f = debugfs_create_file("flags", 0444, dir, &nbd, &nbd_dbg_flags_ops);
934 if (IS_ERR_OR_NULL(f)) {
935 dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 'flags', %ld\n",
936 PTR_ERR(f));
937 return PTR_ERR(f);
938 }
939 912
940 return 0; 913 return 0;
941} 914}
@@ -950,8 +923,8 @@ static int nbd_dbg_init(void)
950 struct dentry *dbg_dir; 923 struct dentry *dbg_dir;
951 924
952 dbg_dir = debugfs_create_dir("nbd", NULL); 925 dbg_dir = debugfs_create_dir("nbd", NULL);
953 if (IS_ERR(dbg_dir)) 926 if (!dbg_dir)
954 return PTR_ERR(dbg_dir); 927 return -EIO;
955 928
956 nbd_dbg_dir = dbg_dir; 929 nbd_dbg_dir = dbg_dir;
957 930