mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-29 04:54:27 +01:00
Fix fops write buf printk bug, improve fops file name further
This commit is contained in:
@@ -83,11 +83,11 @@ static ssize_t fop_write(struct file *file, const char __user *buf, size_t len,
|
|||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
} else {
|
} else {
|
||||||
ret = len;
|
ret = len;
|
||||||
|
printk(KERN_INFO "buf = %.*s\n", (int)len, data + *off);
|
||||||
*off += ret;
|
*off += ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printk(KERN_INFO "buf = %.*s\n", (int)len, data + *off);
|
|
||||||
printk(KERN_INFO "ret = %lld\n", (long long)ret);
|
printk(KERN_INFO "ret = %lld\n", (long long)ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -144,7 +144,7 @@ int init_module(void)
|
|||||||
printk(KERN_ALERT "debugfs_create_dir failed");
|
printk(KERN_ALERT "debugfs_create_dir failed");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
file = debugfs_create_file("fops", 0666, dir, NULL, &fops);
|
file = debugfs_create_file("f", 0666, dir, NULL, &fops);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
printk(KERN_ALERT "debugfs_create_file failed");
|
printk(KERN_ALERT "debugfs_create_file failed");
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ insmod /fops.ko
|
|||||||
cd /sys/kernel/debug/lkmc_fops
|
cd /sys/kernel/debug/lkmc_fops
|
||||||
|
|
||||||
## Basic read.
|
## Basic read.
|
||||||
cat fops
|
cat f
|
||||||
# => abcd
|
# => abcd
|
||||||
# dmesg => open
|
# dmesg => open
|
||||||
# dmesg => read
|
# dmesg => read
|
||||||
@@ -14,14 +14,14 @@ cat fops
|
|||||||
|
|
||||||
## Basic write
|
## Basic write
|
||||||
|
|
||||||
printf '01' >fops
|
printf '01' >f
|
||||||
# dmesg => open
|
# dmesg => open
|
||||||
# dmesg => write
|
# dmesg => write
|
||||||
# dmesg => len = 1
|
# dmesg => len = 1
|
||||||
# dmesg => buf = a
|
# dmesg => buf = a
|
||||||
# dmesg => close
|
# dmesg => close
|
||||||
|
|
||||||
cat fops
|
cat f
|
||||||
# => 01cd
|
# => 01cd
|
||||||
# dmesg => open
|
# dmesg => open
|
||||||
# dmesg => read
|
# dmesg => read
|
||||||
@@ -29,15 +29,15 @@ cat fops
|
|||||||
# dmesg => close
|
# dmesg => close
|
||||||
|
|
||||||
## ENOSPC
|
## ENOSPC
|
||||||
printf '1234' >fops
|
printf '1234' >f
|
||||||
printf '12345' >fops
|
printf '12345' >f
|
||||||
echo "$?"
|
echo "$?"
|
||||||
# => 8
|
# => 8
|
||||||
cat fops
|
cat f
|
||||||
# => 1234
|
# => 1234
|
||||||
|
|
||||||
## seek
|
## seek
|
||||||
printf '1234' >fops
|
printf '1234' >f
|
||||||
printf 'z' | dd bs=1 of=fops seek=2
|
printf 'z' | dd bs=1 of=f seek=2
|
||||||
cat fops
|
cat f
|
||||||
# => 12z4
|
# => 12z4
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ insmod /fops.ko
|
|||||||
cd /sys/kernel/debug/lkmc_fops
|
cd /sys/kernel/debug/lkmc_fops
|
||||||
i=0
|
i=0
|
||||||
while true; do
|
while true; do
|
||||||
printf "$i" >fops
|
printf "$i" >f
|
||||||
i=$(($i+1))
|
i=$(($i+1))
|
||||||
done &
|
done &
|
||||||
/kgdb.sh
|
/kgdb.sh
|
||||||
|
|||||||
Reference in New Issue
Block a user