Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

wimax: no need to check return value of debugfs_create functions

When calling debugfs functions, there is no need to ever check the
return value. The function can work or not, but the code logic should
never do something different based on this.

This cleans up a lot of unneeded code and logic around the debugfs wimax
files, making all of this much simpler and easier to understand.

Cc: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
Cc: linux-wimax@intel.com
Cc: netdev@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Greg Kroah-Hartman and committed by
David S. Miller
a62052ba 38b9e0f6

+51 -257
+23 -127
drivers/net/wimax/i2400m/debugfs.c
··· 30 30 debugfs_netdev_queue_stopped_get, 31 31 NULL, "%llu\n"); 32 32 33 - 34 - static 35 - struct dentry *debugfs_create_netdev_queue_stopped( 36 - const char *name, struct dentry *parent, struct i2400m *i2400m) 37 - { 38 - return debugfs_create_file(name, 0400, parent, i2400m, 39 - &fops_netdev_queue_stopped); 40 - } 41 - 42 33 /* 43 34 * We don't allow partial reads of this file, as then the reader would 44 35 * get weirdly confused data as it is updated. ··· 158 167 NULL, debugfs_i2400m_suspend_set, 159 168 "%llu\n"); 160 169 161 - static 162 - struct dentry *debugfs_create_i2400m_suspend( 163 - const char *name, struct dentry *parent, struct i2400m *i2400m) 164 - { 165 - return debugfs_create_file(name, 0200, parent, i2400m, 166 - &fops_i2400m_suspend); 167 - } 168 - 169 - 170 170 /* 171 171 * Reset the device 172 172 * ··· 187 205 NULL, debugfs_i2400m_reset_set, 188 206 "%llu\n"); 189 207 190 - static 191 - struct dentry *debugfs_create_i2400m_reset( 192 - const char *name, struct dentry *parent, struct i2400m *i2400m) 208 + void i2400m_debugfs_add(struct i2400m *i2400m) 193 209 { 194 - return debugfs_create_file(name, 0200, parent, i2400m, 195 - &fops_i2400m_reset); 196 - } 197 - 198 - 199 - #define __debugfs_register(prefix, name, parent) \ 200 - do { \ 201 - result = d_level_register_debugfs(prefix, name, parent); \ 202 - if (result < 0) \ 203 - goto error; \ 204 - } while (0) 205 - 206 - 207 - int i2400m_debugfs_add(struct i2400m *i2400m) 208 - { 209 - int result; 210 - struct device *dev = i2400m_dev(i2400m); 211 210 struct dentry *dentry = i2400m->wimax_dev.debugfs_dentry; 212 - struct dentry *fd; 213 211 214 212 dentry = debugfs_create_dir("i2400m", dentry); 215 - result = PTR_ERR(dentry); 216 - if (IS_ERR(dentry)) { 217 - if (result == -ENODEV) 218 - result = 0; /* No debugfs support */ 219 - goto error; 220 - } 221 213 i2400m->debugfs_dentry = dentry; 222 - __debugfs_register("dl_", control, dentry); 223 - __debugfs_register("dl_", driver, dentry); 224 - __debugfs_register("dl_", debugfs, dentry); 225 - __debugfs_register("dl_", fw, dentry); 226 - __debugfs_register("dl_", netdev, dentry); 227 - __debugfs_register("dl_", rfkill, dentry); 228 - __debugfs_register("dl_", rx, dentry); 229 - __debugfs_register("dl_", tx, dentry); 230 214 231 - fd = debugfs_create_size_t("tx_in", 0400, dentry, 232 - &i2400m->tx_in); 233 - result = PTR_ERR(fd); 234 - if (IS_ERR(fd) && result != -ENODEV) { 235 - dev_err(dev, "Can't create debugfs entry " 236 - "tx_in: %d\n", result); 237 - goto error; 238 - } 215 + d_level_register_debugfs("dl_", control, dentry); 216 + d_level_register_debugfs("dl_", driver, dentry); 217 + d_level_register_debugfs("dl_", debugfs, dentry); 218 + d_level_register_debugfs("dl_", fw, dentry); 219 + d_level_register_debugfs("dl_", netdev, dentry); 220 + d_level_register_debugfs("dl_", rfkill, dentry); 221 + d_level_register_debugfs("dl_", rx, dentry); 222 + d_level_register_debugfs("dl_", tx, dentry); 239 223 240 - fd = debugfs_create_size_t("tx_out", 0400, dentry, 241 - &i2400m->tx_out); 242 - result = PTR_ERR(fd); 243 - if (IS_ERR(fd) && result != -ENODEV) { 244 - dev_err(dev, "Can't create debugfs entry " 245 - "tx_out: %d\n", result); 246 - goto error; 247 - } 248 - 249 - fd = debugfs_create_u32("state", 0600, dentry, 250 - &i2400m->state); 251 - result = PTR_ERR(fd); 252 - if (IS_ERR(fd) && result != -ENODEV) { 253 - dev_err(dev, "Can't create debugfs entry " 254 - "state: %d\n", result); 255 - goto error; 256 - } 224 + debugfs_create_size_t("tx_in", 0400, dentry, &i2400m->tx_in); 225 + debugfs_create_size_t("tx_out", 0400, dentry, &i2400m->tx_out); 226 + debugfs_create_u32("state", 0600, dentry, &i2400m->state); 257 227 258 228 /* 259 229 * Trace received messages from user space ··· 229 295 * It is not really very atomic, but it is also not too 230 296 * critical. 231 297 */ 232 - fd = debugfs_create_u8("trace_msg_from_user", 0600, dentry, 233 - &i2400m->trace_msg_from_user); 234 - result = PTR_ERR(fd); 235 - if (IS_ERR(fd) && result != -ENODEV) { 236 - dev_err(dev, "Can't create debugfs entry " 237 - "trace_msg_from_user: %d\n", result); 238 - goto error; 239 - } 298 + debugfs_create_u8("trace_msg_from_user", 0600, dentry, 299 + &i2400m->trace_msg_from_user); 240 300 241 - fd = debugfs_create_netdev_queue_stopped("netdev_queue_stopped", 242 - dentry, i2400m); 243 - result = PTR_ERR(fd); 244 - if (IS_ERR(fd) && result != -ENODEV) { 245 - dev_err(dev, "Can't create debugfs entry " 246 - "netdev_queue_stopped: %d\n", result); 247 - goto error; 248 - } 301 + debugfs_create_file("netdev_queue_stopped", 0400, dentry, i2400m, 302 + &fops_netdev_queue_stopped); 249 303 250 - fd = debugfs_create_file("rx_stats", 0600, dentry, i2400m, 251 - &i2400m_rx_stats_fops); 252 - result = PTR_ERR(fd); 253 - if (IS_ERR(fd) && result != -ENODEV) { 254 - dev_err(dev, "Can't create debugfs entry " 255 - "rx_stats: %d\n", result); 256 - goto error; 257 - } 304 + debugfs_create_file("rx_stats", 0600, dentry, i2400m, 305 + &i2400m_rx_stats_fops); 258 306 259 - fd = debugfs_create_file("tx_stats", 0600, dentry, i2400m, 260 - &i2400m_tx_stats_fops); 261 - result = PTR_ERR(fd); 262 - if (IS_ERR(fd) && result != -ENODEV) { 263 - dev_err(dev, "Can't create debugfs entry " 264 - "tx_stats: %d\n", result); 265 - goto error; 266 - } 307 + debugfs_create_file("tx_stats", 0600, dentry, i2400m, 308 + &i2400m_tx_stats_fops); 267 309 268 - fd = debugfs_create_i2400m_suspend("suspend", dentry, i2400m); 269 - result = PTR_ERR(fd); 270 - if (IS_ERR(fd) && result != -ENODEV) { 271 - dev_err(dev, "Can't create debugfs entry suspend: %d\n", 272 - result); 273 - goto error; 274 - } 310 + debugfs_create_file("suspend", 0200, dentry, i2400m, 311 + &fops_i2400m_suspend); 275 312 276 - fd = debugfs_create_i2400m_reset("reset", dentry, i2400m); 277 - result = PTR_ERR(fd); 278 - if (IS_ERR(fd) && result != -ENODEV) { 279 - dev_err(dev, "Can't create debugfs entry reset: %d\n", result); 280 - goto error; 281 - } 282 - 283 - result = 0; 284 - error: 285 - return result; 313 + debugfs_create_file("reset", 0200, dentry, i2400m, &fops_i2400m_reset); 286 314 } 287 315 288 316 void i2400m_debugfs_rm(struct i2400m *i2400m)
+1 -6
drivers/net/wimax/i2400m/driver.c
··· 905 905 goto error_sysfs_setup; 906 906 } 907 907 908 - result = i2400m_debugfs_add(i2400m); 909 - if (result < 0) { 910 - dev_err(dev, "cannot setup i2400m's debugfs: %d\n", result); 911 - goto error_debugfs_setup; 912 - } 908 + i2400m_debugfs_add(i2400m); 913 909 914 910 result = i2400m_dev_start(i2400m, bm_flags); 915 911 if (result < 0) ··· 915 919 916 920 error_dev_start: 917 921 i2400m_debugfs_rm(i2400m); 918 - error_debugfs_setup: 919 922 sysfs_remove_group(&i2400m->wimax_dev.net_dev->dev.kobj, 920 923 &i2400m_dev_attr_group); 921 924 error_sysfs_setup:
+2 -5
drivers/net/wimax/i2400m/i2400m.h
··· 812 812 int i2400m_tx(struct i2400m *, const void *, size_t, enum i2400m_pt); 813 813 814 814 #ifdef CONFIG_DEBUG_FS 815 - int i2400m_debugfs_add(struct i2400m *); 815 + void i2400m_debugfs_add(struct i2400m *); 816 816 void i2400m_debugfs_rm(struct i2400m *); 817 817 #else 818 - static inline int i2400m_debugfs_add(struct i2400m *i2400m) 819 - { 820 - return 0; 821 - } 818 + static inline void i2400m_debugfs_add(struct i2400m *i2400m) {} 822 819 static inline void i2400m_debugfs_rm(struct i2400m *i2400m) {} 823 820 #endif 824 821
+11 -53
drivers/net/wimax/i2400m/usb.c
··· 366 366 }; 367 367 size_t D_LEVEL_SIZE = ARRAY_SIZE(D_LEVEL); 368 368 369 - 370 - #define __debugfs_register(prefix, name, parent) \ 371 - do { \ 372 - result = d_level_register_debugfs(prefix, name, parent); \ 373 - if (result < 0) \ 374 - goto error; \ 375 - } while (0) 376 - 377 - 378 369 static 379 - int i2400mu_debugfs_add(struct i2400mu *i2400mu) 370 + void i2400mu_debugfs_add(struct i2400mu *i2400mu) 380 371 { 381 - int result; 382 - struct device *dev = &i2400mu->usb_iface->dev; 383 372 struct dentry *dentry = i2400mu->i2400m.wimax_dev.debugfs_dentry; 384 - struct dentry *fd; 385 373 386 374 dentry = debugfs_create_dir("i2400m-usb", dentry); 387 - result = PTR_ERR(dentry); 388 - if (IS_ERR(dentry)) { 389 - if (result == -ENODEV) 390 - result = 0; /* No debugfs support */ 391 - goto error; 392 - } 393 375 i2400mu->debugfs_dentry = dentry; 394 - __debugfs_register("dl_", usb, dentry); 395 - __debugfs_register("dl_", fw, dentry); 396 - __debugfs_register("dl_", notif, dentry); 397 - __debugfs_register("dl_", rx, dentry); 398 - __debugfs_register("dl_", tx, dentry); 376 + 377 + d_level_register_debugfs("dl_", usb, dentry); 378 + d_level_register_debugfs("dl_", fw, dentry); 379 + d_level_register_debugfs("dl_", notif, dentry); 380 + d_level_register_debugfs("dl_", rx, dentry); 381 + d_level_register_debugfs("dl_", tx, dentry); 399 382 400 383 /* Don't touch these if you don't know what you are doing */ 401 - fd = debugfs_create_u8("rx_size_auto_shrink", 0600, dentry, 402 - &i2400mu->rx_size_auto_shrink); 403 - result = PTR_ERR(fd); 404 - if (IS_ERR(fd) && result != -ENODEV) { 405 - dev_err(dev, "Can't create debugfs entry " 406 - "rx_size_auto_shrink: %d\n", result); 407 - goto error; 408 - } 384 + debugfs_create_u8("rx_size_auto_shrink", 0600, dentry, 385 + &i2400mu->rx_size_auto_shrink); 409 386 410 - fd = debugfs_create_size_t("rx_size", 0600, dentry, 411 - &i2400mu->rx_size); 412 - result = PTR_ERR(fd); 413 - if (IS_ERR(fd) && result != -ENODEV) { 414 - dev_err(dev, "Can't create debugfs entry " 415 - "rx_size: %d\n", result); 416 - goto error; 417 - } 418 - 419 - return 0; 420 - 421 - error: 422 - debugfs_remove_recursive(i2400mu->debugfs_dentry); 423 - return result; 387 + debugfs_create_size_t("rx_size", 0600, dentry, &i2400mu->rx_size); 424 388 } 425 389 426 390 ··· 498 534 dev_err(dev, "cannot setup device: %d\n", result); 499 535 goto error_setup; 500 536 } 501 - result = i2400mu_debugfs_add(i2400mu); 502 - if (result < 0) { 503 - dev_err(dev, "Can't register i2400mu's debugfs: %d\n", result); 504 - goto error_debugfs_add; 505 - } 537 + i2400mu_debugfs_add(i2400mu); 506 538 return 0; 507 539 508 - error_debugfs_add: 509 - i2400m_release(i2400m); 510 540 error_setup: 511 541 usb_set_intfdata(iface, NULL); 512 542 usb_put_dev(i2400mu->usb_dev);
+3 -17
include/linux/wimax/debug.h
··· 98 98 * To manipulate from user space the levels, create a debugfs dentry 99 99 * and then register each submodule with: 100 100 * 101 - * result = d_level_register_debugfs("PREFIX_", submodule_X, parent); 102 - * if (result < 0) 103 - * goto error; 101 + * d_level_register_debugfs("PREFIX_", submodule_X, parent); 104 102 * 105 103 * Where PREFIX_ is a name of your chosing. This will create debugfs 106 104 * file with a single numeric value that can be use to tweak it. To ··· 406 408 * @submodule: name of submodule (not a string, just the name) 407 409 * @dentry: debugfs parent dentry 408 410 * 409 - * Returns: 0 if ok, < 0 errno on error. 410 - * 411 411 * For removing, just use debugfs_remove_recursive() on the parent. 412 412 */ 413 413 #define d_level_register_debugfs(prefix, name, parent) \ 414 414 ({ \ 415 - int rc; \ 416 - struct dentry *fd; \ 417 - struct dentry *verify_parent_type = parent; \ 418 - fd = debugfs_create_u8( \ 419 - prefix #name, 0600, verify_parent_type, \ 415 + debugfs_create_u8( \ 416 + prefix #name, 0600, parent, \ 420 417 &(D_LEVEL[__D_SUBMODULE_ ## name].level)); \ 421 - rc = PTR_ERR(fd); \ 422 - if (IS_ERR(fd) && rc != -ENODEV) \ 423 - printk(KERN_ERR "%s: Can't create debugfs entry %s: " \ 424 - "%d\n", __func__, prefix #name, rc); \ 425 - else \ 426 - rc = 0; \ 427 - rc; \ 428 418 }) 429 419 430 420
+8 -34
net/wimax/debugfs.c
··· 13 13 #define D_SUBMODULE debugfs 14 14 #include "debug-levels.h" 15 15 16 - 17 - #define __debugfs_register(prefix, name, parent) \ 18 - do { \ 19 - result = d_level_register_debugfs(prefix, name, parent); \ 20 - if (result < 0) \ 21 - goto error; \ 22 - } while (0) 23 - 24 - 25 - int wimax_debugfs_add(struct wimax_dev *wimax_dev) 16 + void wimax_debugfs_add(struct wimax_dev *wimax_dev) 26 17 { 27 - int result; 28 18 struct net_device *net_dev = wimax_dev->net_dev; 29 - struct device *dev = net_dev->dev.parent; 30 19 struct dentry *dentry; 31 20 char buf[128]; 32 21 33 22 snprintf(buf, sizeof(buf), "wimax:%s", net_dev->name); 34 23 dentry = debugfs_create_dir(buf, NULL); 35 - result = PTR_ERR(dentry); 36 - if (IS_ERR(dentry)) { 37 - if (result == -ENODEV) 38 - result = 0; /* No debugfs support */ 39 - else 40 - dev_err(dev, "Can't create debugfs dentry: %d\n", 41 - result); 42 - goto out; 43 - } 44 24 wimax_dev->debugfs_dentry = dentry; 45 - __debugfs_register("wimax_dl_", debugfs, dentry); 46 - __debugfs_register("wimax_dl_", id_table, dentry); 47 - __debugfs_register("wimax_dl_", op_msg, dentry); 48 - __debugfs_register("wimax_dl_", op_reset, dentry); 49 - __debugfs_register("wimax_dl_", op_rfkill, dentry); 50 - __debugfs_register("wimax_dl_", op_state_get, dentry); 51 - __debugfs_register("wimax_dl_", stack, dentry); 52 - result = 0; 53 - out: 54 - return result; 55 25 56 - error: 57 - debugfs_remove_recursive(wimax_dev->debugfs_dentry); 58 - return result; 26 + d_level_register_debugfs("wimax_dl_", debugfs, dentry); 27 + d_level_register_debugfs("wimax_dl_", id_table, dentry); 28 + d_level_register_debugfs("wimax_dl_", op_msg, dentry); 29 + d_level_register_debugfs("wimax_dl_", op_reset, dentry); 30 + d_level_register_debugfs("wimax_dl_", op_rfkill, dentry); 31 + d_level_register_debugfs("wimax_dl_", op_state_get, dentry); 32 + d_level_register_debugfs("wimax_dl_", stack, dentry); 59 33 } 60 34 61 35 void wimax_debugfs_rm(struct wimax_dev *wimax_dev)
+1 -10
net/wimax/stack.c
··· 481 481 /* Set up user-space interaction */ 482 482 mutex_lock(&wimax_dev->mutex); 483 483 wimax_id_table_add(wimax_dev); 484 - result = wimax_debugfs_add(wimax_dev); 485 - if (result < 0) { 486 - dev_err(dev, "cannot initialize debugfs: %d\n", 487 - result); 488 - goto error_debugfs_add; 489 - } 484 + wimax_debugfs_add(wimax_dev); 490 485 491 486 __wimax_state_set(wimax_dev, WIMAX_ST_DOWN); 492 487 mutex_unlock(&wimax_dev->mutex); ··· 493 498 d_fnend(3, dev, "(wimax_dev %p net_dev %p) = 0\n", wimax_dev, net_dev); 494 499 return 0; 495 500 496 - error_debugfs_add: 497 - wimax_id_table_rm(wimax_dev); 498 - mutex_unlock(&wimax_dev->mutex); 499 - wimax_rfkill_rm(wimax_dev); 500 501 error_rfkill_add: 501 502 d_fnend(3, dev, "(wimax_dev %p net_dev %p) = %d\n", 502 503 wimax_dev, net_dev, result);
+2 -5
net/wimax/wimax-internal.h
··· 57 57 void __wimax_state_change(struct wimax_dev *, enum wimax_st); 58 58 59 59 #ifdef CONFIG_DEBUG_FS 60 - int wimax_debugfs_add(struct wimax_dev *); 60 + void wimax_debugfs_add(struct wimax_dev *); 61 61 void wimax_debugfs_rm(struct wimax_dev *); 62 62 #else 63 - static inline int wimax_debugfs_add(struct wimax_dev *wimax_dev) 64 - { 65 - return 0; 66 - } 63 + static inline void wimax_debugfs_add(struct wimax_dev *wimax_dev) {} 67 64 static inline void wimax_debugfs_rm(struct wimax_dev *wimax_dev) {} 68 65 #endif 69 66