From: Pat Gefre arch/ia64/sn/io/machvec/pci_bus_cvlink.c Couple of checks for kmalloc <= 0 were fixed Some __init and static fixes --- arch/ia64/sn/io/machvec/pci_bus_cvlink.c | 28 +++++++++++++++++----------- 1 files changed, 17 insertions(+), 11 deletions(-) diff -puN arch/ia64/sn/io/machvec/pci_bus_cvlink.c~altix-11 arch/ia64/sn/io/machvec/pci_bus_cvlink.c --- 25/arch/ia64/sn/io/machvec/pci_bus_cvlink.c~altix-11 2004-02-02 23:19:57.000000000 -0800 +++ 25-akpm/arch/ia64/sn/io/machvec/pci_bus_cvlink.c 2004-02-02 23:19:57.000000000 -0800 @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -27,7 +28,7 @@ vertex_hdl_t devfn_to_vertex(unsigned ch extern void register_pcibr_intr(int irq, pcibr_intr_t intr); -void sn_dma_flush_init(unsigned long start, unsigned long end, int idx, int pin, int slot); +static void sn_dma_flush_init(unsigned long start, unsigned long end, int idx, int pin, int slot); extern int cbrick_type_get_nasid(nasid_t); extern void ioconfig_bus_new_entries(void); extern void ioconfig_get_busnum(char *, int *); @@ -42,7 +43,7 @@ extern int isIO9(int); * Init the provider asic for a given device */ -static void +static inline void __init set_pci_provider(struct sn_device_sysdata *device_sysdata) { pciio_info_t pciio_info = pciio_info_get(device_sysdata->vhdl); @@ -74,7 +75,7 @@ pci_bus_cvlink_init(void) * pci_bus_to_vertex() - Given a logical Linux Bus Number returns the associated * pci bus vertex from the SGI IO Infrastructure. */ -vertex_hdl_t +static inline vertex_hdl_t pci_bus_to_vertex(unsigned char busnum) { @@ -162,7 +163,7 @@ struct sn_flush_nasid_entry flush_nasid_ * on the in use pin. This will prevent the race condition between PIO read responses and * DMA writes. */ -void +static void sn_dma_flush_init(unsigned long start, unsigned long end, int idx, int pin, int slot) { nasid_t nasid; @@ -182,8 +183,8 @@ sn_dma_flush_init(unsigned long start, u if (flush_nasid_list[nasid].widget_p == NULL) { flush_nasid_list[nasid].widget_p = (struct sn_flush_device_list **)kmalloc((HUB_WIDGET_ID_MAX+1) * sizeof(struct sn_flush_device_list *), GFP_KERNEL); - if (flush_nasid_list[nasid].widget_p <= 0) { - printk("sn_dma_flush_init: Cannot allocate memory for nasid list\n"); + if (!flush_nasid_list[nasid].widget_p) { + printk(KERN_WARNING "sn_dma_flush_init: Cannot allocate memory for nasid list\n"); return; } memset(flush_nasid_list[nasid].widget_p, 0, (HUB_WIDGET_ID_MAX+1) * sizeof(struct sn_flush_device_list *)); @@ -213,8 +214,8 @@ sn_dma_flush_init(unsigned long start, u if (flush_nasid_list[nasid].widget_p[wid_num] == NULL) { flush_nasid_list[nasid].widget_p[wid_num] = (struct sn_flush_device_list *)kmalloc( DEV_PER_WIDGET * sizeof (struct sn_flush_device_list), GFP_KERNEL); - if (flush_nasid_list[nasid].widget_p[wid_num] <= 0) { - printk("sn_dma_flush_init: Cannot allocate memory for nasid sub-list\n"); + if (!flush_nasid_list[nasid].widget_p[wid_num]) { + printk(KERN_WARNING "sn_dma_flush_init: Cannot allocate memory for nasid sub-list\n"); return; } memset(flush_nasid_list[nasid].widget_p[wid_num], 0, @@ -306,7 +307,7 @@ sn_dma_flush_init(unsigned long start, u * * Other platform specific fixup can also be done here. */ -void +static void __init sn_pci_fixup(int arg) { struct list_head *ln; @@ -353,6 +354,11 @@ sn_pci_fixup(int arg) pci_bus = pci_bus_b(ln); widget_sysdata = kmalloc(sizeof(struct sn_widget_sysdata), GFP_KERNEL); + if (!widget_sysdata) { + printk(KERN_WARNING "sn_pci_fixup(): Unable to " + "allocate memory for widget_sysdata\n"); + return; + } widget_sysdata->vhdl = pci_bus_to_vertex(pci_bus->number); pci_bus->sysdata = (void *)widget_sysdata; } @@ -390,8 +396,8 @@ sn_pci_fixup(int arg) device_sysdata = kmalloc(sizeof(struct sn_device_sysdata), GFP_KERNEL); - if (device_sysdata <= 0) { - printk("sn_pci_fixup: Cannot allocate memory for device sysdata\n"); + if (!device_sysdata) { + printk(KERN_WARNING "sn_pci_fixup: Cannot allocate memory for device sysdata\n"); return; } _