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:
zhaoyao73 2023-09-03 01:36:02 -04:00 committed by GitHub
parent d9113303d8
commit 607783d741
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 9 deletions

View File

@ -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;

View File

@ -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
{

View File

@ -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
;;
*)
;;