ndis でクラッシュする原因は分かった2017年01月30日 18時23分42秒

デバッグを有効にしたカーネルを使ったら比較的簡単に原因が浮かび上がってきた。カーネルスタックは、ロックの型が一致してないとの事。

少しカーネルに変更を加えて、構造体のアドレスを表示してみた。すると、全て同じアドレスでなければいけないのに、異なったアドレスを表示する箇所がある。

ifnet 構造体の ifp のアドレスがおかしい。if_ndisvar.h の ifnet の ifp 型が、ケーブル用と無線用で共に使われていたが、変更後に共有体の一部になった事が原因だ。

ndis のコード内で、ifp 型を受け取らなければいけない場所で、ieee80211com の構造体として、初期化された部分が渡されるので、渡された構造体が全く異なってしまっている。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2017/01/30/8342185/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。