Linuxカーネルモジュールで次のコードを確認していました:
static int proc_read_kernel(char *buffer, char **start, off_t offset, int length,int *eof, void *data)
{
int len=0;
struct mem_rw_t *mem= (struct mem_rw_t *)data;
switch(mem->flag)
{
上記のコードから、次のように長さチェックを持つ別の関数に切り替えます
static int func1(char *buffer, char **start, off_t offset, int length)
{
printk ("The value for len is %d\n\r",len);
printk ("The value for length is %d\n\r",length);
if(len > length)
goto list_finished;
上記のコードの出力は次のようになります。len が最後の値の長さよりも大きくなり、proc read が正しく機能していないようです。
The value for len is 0
The value for length is 3072
The value for len is 398
The value for length is 3072
The value for len is 796
The value for length is 3072
The value for len is 796
The value for length is 3072
The value for len is 1537
The value for length is 3072
The value for len is 1777
The value for length is 3072
The value for len is 1777
The value for length is 3072
The value for len is 2029
The value for length is 3072
The value for len is 2427
The value for length is 3072
The value for len is 3120
The value for length is 3072
<4>proc_file_read: Read count exceeded
上記のエラーを削除するための提案はありますか?