mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-08 22:36:48 +00:00
fix pci_irq.c - memory leak - wrong irq_name allocated length (#367)
add function declaration to avoid compiling warning add extra packages need for build Co-authored-by: Yao Zhao <dragonlinux@gmail.com>
This commit is contained in:
parent
d9113303d8
commit
607783d741
@ -42,14 +42,17 @@ uint16_t c_irq_install(ul irq_num,void (*pci_irq_handler)(ul irq_num, ul paramet
|
||||
{
|
||||
return EAGAIN;
|
||||
}
|
||||
|
||||
hardware_intr_controller* pci_interrupt_controller = kmalloc(sizeof(hardware_intr_controller),0);
|
||||
pci_interrupt_controller->enable = pci_irq_enable;
|
||||
pci_interrupt_controller->disable = pci_irq_disable;
|
||||
pci_interrupt_controller->install= pci_irq_install;
|
||||
pci_interrupt_controller->uninstall= pci_irq_uninstall;
|
||||
if(pci_irq_ack)
|
||||
if (pci_interrupt_controller) {
|
||||
pci_interrupt_controller->enable = pci_irq_enable;
|
||||
pci_interrupt_controller->disable = pci_irq_disable;
|
||||
pci_interrupt_controller->install = pci_irq_install;
|
||||
pci_interrupt_controller->uninstall = pci_irq_uninstall;
|
||||
pci_interrupt_controller->ack = pci_irq_ack;
|
||||
int namelen = sizeof(strlen(irq_name) + 1);
|
||||
p->controller = pci_interrupt_controller;
|
||||
}
|
||||
size_t namelen = strlen(irq_name) + 1;
|
||||
p->irq_name = (char *)kmalloc(namelen, 0);
|
||||
memset(p->irq_name, 0, namelen);
|
||||
strncpy(p->irq_name, irq_name, namelen);
|
||||
@ -73,12 +76,12 @@ void c_irq_uninstall(ul irq_num)
|
||||
{
|
||||
kerror("irq install for pci irq: invalid irq num: %ld.", irq_num);
|
||||
}
|
||||
if(p->irq_name!=NULL)
|
||||
if(p->irq_name != NULL)
|
||||
{
|
||||
kfree(p->irq_name);
|
||||
p->irq_name = NULL;
|
||||
}
|
||||
if(p->controller!=NULL)
|
||||
if(p->controller != NULL)
|
||||
{
|
||||
kfree(p->controller);
|
||||
p->controller = NULL;
|
||||
|
@ -27,6 +27,7 @@ static uint64_t test_tsc_end = 0;
|
||||
extern uint64_t Cpu_tsc_freq; // 导出自cpu.c
|
||||
|
||||
extern struct rtc_time_t rtc_now; // 导出全局墙上时钟
|
||||
extern uint64_t rs_update_timer_jiffies(uint64_t);
|
||||
|
||||
enum
|
||||
{
|
||||
|
@ -89,7 +89,9 @@ case `cat /etc/os-release | grep '^NAME=' | cut -d'"' -f2` in
|
||||
wget
|
||||
;;
|
||||
"Arch"*)
|
||||
sudo pacman -S --needed --noconfirm gcc make flex wget texinfo libmpc gmp mpfr
|
||||
sudo pacman -S --needed --noconfirm \
|
||||
gcc make flex wget texinfo libmpc gmp mpfr \
|
||||
diffutils pkgconf which unzip
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
|
Loading…
x
Reference in New Issue
Block a user