return;
}
if (address < PAGE_SIZE) {
- printk("Unable to handle kernel NULL pointer dereference");
+ printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference");
pg0[0] = PAGE_SHARED;
} else
- printk("Unable to handle kernel paging request");
- printk(" at address %08lx\n",address);
+ printk(KERN_ALERT "Unable to handle kernel paging request");
+ printk(" at kernel address %08lx\n",address);
+ address += TASK_SIZE;
+ __asm__("movl %%cr3,%0" : "=r" (user_esp));
+ printk(KERN_ALERT "current->tss.cr3 = %08lx, %%cr3 = %08lx\n",
+ current->tss.cr3, user_esp);
+ user_esp = ((unsigned long *) user_esp)[address >> 22];
+ printk(KERN_ALERT "*pde = %08lx\n", user_esp);
+ if (user_esp & PAGE_PRESENT) {
+ user_esp &= PAGE_MASK;
+ address &= 0x003ff000;
+ user_esp = ((unsigned long *) user_esp)[address >> PAGE_SHIFT];
+ printk(KERN_ALERT "*pte = %08lx\n", user_esp);
+ }
die_if_kernel("Oops", regs, error_code);
do_exit(SIGKILL);
}
if (sin.sin_port == 0)
sin.sin_port = sk->protocol;
+ if (sin.sin_addr.s_addr == INADDR_ANY)
+ sin.sin_addr.s_addr = ip_my_addr();
+
if (sk->broadcast == 0 && ip_chk_addr(sin.sin_addr.s_addr)==IS_BROADCAST)
return -EACCES;
* Alan Cox : No wakeup calls. Instead we now use the callbacks.
* Alan Cox : Use ip_tos and ip_ttl
* Alan Cox : SNMP Mibs
+ * Alan Cox : MSG_DONTROUTE, and 0.0.0.0 support.
*
*
* This program is free software; you can redistribute it and/or
* BSD socket semantics. You must set SO_BROADCAST to permit
* broadcasting of data.
*/
+
+ if(sin.sin_addr.s_addr==INADDR_ANY)
+ sin.sin_addr.s_addr=ip_my_addr();
+
if(!sk->broadcast && ip_chk_addr(sin.sin_addr.s_addr)==IS_BROADCAST)
return -EACCES; /* Must turn broadcast on first */