Thread (8 messages) 8 messages, 4 authors, 2011-06-09

Problems with hypercalls

From: Mulyadi Santosa <hidden>
Date: 2011-06-08 16:46:09

Hi...

On Wed, Jun 8, 2011 at 21:54, emilie lefebvre [off-list ref] wrote:
This is my function :

static spinlock_t xgr_learn_lock = SPIN_LOCK_UNLOCKED;
static int piga_seq_cpt = 1;

/*
* Function called for each systemcall (Hook SELinux avc function)
*/
int piga_control(u32 ssid, ...., struct av_decision * avd) {

/*
* Here my hypercall work but block my vm with this error :
* ?????????????? " BUG: scheduling while atomic ... "
*/

spin_lock_bh(&xgr_learn_lock);
? if ( in_atomic())
?????????? kvm_hypercall2 ( 6, (unsigned long)2 ,(unsigned
long)piga_seq_cpt);
AFAIK, anything that trigger context switching, usually trigger
rescheduling too....or in other word, does blocking. Therefore,
grabbing lock must be avoided IMHO
? spin_unlock_bh(&xgr_learn_lock);

?if (piga_on == 1) {
/*
* Here my hypercall make a kernel panic with this error:
* ??????????? " divide error: 0000 [#1] SMP"
*/
??????????????? spin_lock_bh(&xgr_learn_lock);
??????????????? set_current_state(TASK_UNINTERRUPTIBLE);
wait wait, why setting as uninterruptible?
??????????????? kvm_hypercall2 ( 6, (unsigned long)2 ,(unsigned
long)piga_seq_cpt);
??????????????? set_current_state(TASK_RUNNING);
??????????????? spin_lock_bh(&xgr_learn_lock);
}
}




quoted
Date: Wed, 8 Jun 2011 15:52:33 +0530
Subject: Re: Problems with hypercalls
From: fs.rajat at gmail.com
To: mulyadi.santosa at gmail.com
CC: tricheurs at hotmail.fr; kernelnewbies at kernelnewbies.org

are you doing 64bit devision on 32 bit arch? If that is the case,
do_div is worth considering.

On Wed, Jun 8, 2011 at 3:25 PM, Mulyadi Santosa
[off-list ref] wrote:
quoted
On Tue, Jun 7, 2011 at 15:39, emilie lefebvre [off-list ref]
wrote:
quoted
"divide error: 0000 [#1] SMP
...
?[<ffffffff813f8cdd>] panic+0x78/0x137
?[<ffffffff813fcb94>] oops_end+0xe4/0x100
?[<ffffffff8101021b>] die+0x5b/0x90
?[<ffffffff813fc444>] do_trap+0xc4/0x160
?[<ffffffff8100df2f>] do_divide_error+0x8f/0xb0
?[<ffffffff811f974c>] ? my_function+0xdc/0xe70 "

Could you have any suggestions ?
Could you show us your code? perhaps by pasting them somewhere?
quoted
From what I guess, sounds like your code did some math (directly or
indirectly) that fiddle with floating point numbers?


--
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help