vmalloc() a kmalloc() a muj modul do iptables

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Čtvrtek Květen 20 20:33:08 CEST 2010


On Thu, 20 May 2010, Dalibor Straka wrote:

> static bool
> rtfile_load(const struct xt_mtchk_param *par)
> {
> ...
>         rtfile->master_index = kmalloc(65536, GFP_KERNEL);
>         if (!rtfile->master_index) {
>                 printk(KERN_ERR "rtfile: out of memory \n");
>                 goto err2;
>         }
> 	rtfile->master_index[0xaabb] = 1234;

Jelikož se do položky rtfile->master_index[] vejde číslo 1234, tak bude
každá položka nejméně dvoubajtová. Čili zápis na index 0xaabb bude
probíhat nejméně 87414 bajtů za začátkem alokovaného prostoru.
Je 87414 < 65536? Já bych řekl, že nikoli.

(A není se pak co divit, že to padlo na držku při použití vmalloc().)

-- 
Pavel Kankovsky aka Peak                          / Jeremiah 9:21        \
"For death is come up into our MS Windows(tm)..." \ 21st century edition /




Další informace o konferenci Linux