Skip to content

Commit 3d89326

Browse files
committed
Fix incorrect conditional usage of .owner
The examples code wrapped .owner = THIS_MODULE inside version checks, suggesting that it is no longer needed after v6.4. This is only true for driver types where the driver core sets .owner automatically (e.g. platform and i2c drivers). For structures such as struct file_operations, .owner must still be set explicitly by the user. Without it, module reference counting will be broken, allowing a module to be unloaded while still in use, which can lead to kernel panics. For struct class, the core can safely omit .owner, but explicitly setting it remains correct and safe. Adding conditional #if checks around it only makes the examples harder to read and more confusing for readers. Remove the unnecessary version guards and unconditionally sets .owner = THIS_MODULE in the affected example code. Ref: sysprog21/lkmpg#348 Signed-off-by: @visitorckw
1 parent 7b74cfc commit 3d89326

File tree

1 file changed

+1
-3
lines changed

1 file changed

+1
-3
lines changed

simrupt.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,15 +322,13 @@ static int simrupt_release(struct inode *inode, struct file *filp)
322322
}
323323

324324
static const struct file_operations simrupt_fops = {
325-
#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0)
326-
.owner = THIS_MODULE,
327-
#endif
328325
.read = simrupt_read,
329326
#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 12, 0)
330327
.llseek = no_llseek,
331328
#endif
332329
.open = simrupt_open,
333330
.release = simrupt_release,
331+
.owner = THIS_MODULE,
334332
};
335333

336334
static int __init simrupt_init(void)

0 commit comments

Comments
 (0)