.. | .. |
---|
152 | 152 | DEFINE_DEBUGFS_ATTRIBUTE(fei_retval_ops, fei_retval_get, fei_retval_set, |
---|
153 | 153 | "%llx\n"); |
---|
154 | 154 | |
---|
155 | | -static int fei_debugfs_add_attr(struct fei_attr *attr) |
---|
| 155 | +static void fei_debugfs_add_attr(struct fei_attr *attr) |
---|
156 | 156 | { |
---|
157 | 157 | struct dentry *dir; |
---|
158 | 158 | |
---|
159 | 159 | dir = debugfs_create_dir(attr->kp.symbol_name, fei_debugfs_dir); |
---|
160 | | - if (!dir) |
---|
161 | | - return -ENOMEM; |
---|
162 | 160 | |
---|
163 | | - if (!debugfs_create_file("retval", 0600, dir, attr, &fei_retval_ops)) { |
---|
164 | | - debugfs_remove_recursive(dir); |
---|
165 | | - return -ENOMEM; |
---|
166 | | - } |
---|
167 | | - |
---|
168 | | - return 0; |
---|
| 161 | + debugfs_create_file("retval", 0600, dir, attr, &fei_retval_ops); |
---|
169 | 162 | } |
---|
170 | 163 | |
---|
171 | 164 | static void fei_debugfs_remove_attr(struct fei_attr *attr) |
---|
172 | 165 | { |
---|
173 | | - struct dentry *dir; |
---|
174 | | - |
---|
175 | | - dir = debugfs_lookup(attr->kp.symbol_name, fei_debugfs_dir); |
---|
176 | | - if (dir) |
---|
177 | | - debugfs_remove_recursive(dir); |
---|
| 166 | + debugfs_lookup_and_remove(attr->kp.symbol_name, fei_debugfs_dir); |
---|
178 | 167 | } |
---|
179 | 168 | |
---|
180 | 169 | static int fei_kprobe_handler(struct kprobe *kp, struct pt_regs *regs) |
---|
.. | .. |
---|
211 | 200 | { |
---|
212 | 201 | struct fei_attr *attr = list_entry(v, struct fei_attr, list); |
---|
213 | 202 | |
---|
214 | | - seq_printf(m, "%pf\n", attr->kp.addr); |
---|
| 203 | + seq_printf(m, "%ps\n", attr->kp.addr); |
---|
215 | 204 | return 0; |
---|
216 | 205 | } |
---|
217 | 206 | |
---|
.. | .. |
---|
307 | 296 | |
---|
308 | 297 | ret = register_kprobe(&attr->kp); |
---|
309 | 298 | if (!ret) |
---|
310 | | - ret = fei_debugfs_add_attr(attr); |
---|
| 299 | + fei_debugfs_add_attr(attr); |
---|
311 | 300 | if (ret < 0) |
---|
312 | 301 | fei_attr_remove(attr); |
---|
313 | 302 | else { |
---|
.. | .. |
---|
339 | 328 | return PTR_ERR(dir); |
---|
340 | 329 | |
---|
341 | 330 | /* injectable attribute is just a symlink of error_inject/list */ |
---|
342 | | - if (!debugfs_create_symlink("injectable", dir, |
---|
343 | | - "../error_injection/list")) |
---|
344 | | - goto error; |
---|
| 331 | + debugfs_create_symlink("injectable", dir, "../error_injection/list"); |
---|
345 | 332 | |
---|
346 | | - if (!debugfs_create_file("inject", 0600, dir, NULL, &fei_ops)) |
---|
347 | | - goto error; |
---|
| 333 | + debugfs_create_file("inject", 0600, dir, NULL, &fei_ops); |
---|
348 | 334 | |
---|
349 | 335 | fei_debugfs_dir = dir; |
---|
350 | 336 | |
---|
351 | 337 | return 0; |
---|
352 | | -error: |
---|
353 | | - debugfs_remove_recursive(dir); |
---|
354 | | - return -ENOMEM; |
---|
355 | 338 | } |
---|
356 | 339 | |
---|
357 | 340 | late_initcall(fei_debugfs_init); |
---|