Remove unused bits, use kmem_cache_zalloc(), consistently constify instances of struct file_operations, fix an error cleanup path. Signed-off-by: Jan Beulich --- a/arch/i386/mm/ioremap-xen.c +++ b/arch/i386/mm/ioremap-xen.c @@ -154,21 +154,6 @@ int create_lookup_pte_addr(struct mm_str EXPORT_SYMBOL(create_lookup_pte_addr); -static int noop_fn( - pte_t *pte, struct page *pmd_page, unsigned long addr, void *data) -{ - return 0; -} - -int touch_pte_range(struct mm_struct *mm, - unsigned long address, - unsigned long size) -{ - return apply_to_page_range(mm, address, size, noop_fn, NULL); -} - -EXPORT_SYMBOL(touch_pte_range); - /* * Does @address reside within a non-highmem page that is local to this virtual * machine (i.e., not an I/O page, nor a memory page belonging to another VM). --- a/arch/x86_64/kernel/process-xen.c +++ b/arch/x86_64/kernel/process-xen.c @@ -50,7 +50,6 @@ #include #include #include -#include #include #include #include --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c @@ -156,6 +156,10 @@ static struct page *i8xx_alloc_pages(voi if (change_page_attr(page, 4, PAGE_KERNEL_NOCACHE) < 0) { change_page_attr(page, 4, PAGE_KERNEL); global_flush_tlb(); +#ifdef CONFIG_XEN + xen_destroy_contiguous_region((unsigned long)page_address(page), + 2); +#endif __free_pages(page, 2); return NULL; } --- a/drivers/xen/balloon/balloon.c +++ b/drivers/xen/balloon/balloon.c @@ -111,7 +111,6 @@ static LIST_HEAD(ballooned_pages); /* Main work function, always executed in process context. */ static void balloon_process(void *unused); static DECLARE_WORK(balloon_worker, balloon_process, NULL); -static struct timer_list balloon_timer; /* When ballooning out (allocating memory to return to Xen) we don't really want the kernel to try too hard since that can trigger the oom killer. */ @@ -197,6 +196,7 @@ static void balloon_alarm(unsigned long { schedule_work(&balloon_worker); } +static DEFINE_TIMER(balloon_timer, balloon_alarm, 0, 0); static unsigned long current_target(void) { @@ -563,10 +563,6 @@ static int __init balloon_init(void) bs.balloon_high = 0; bs.driver_pages = 0UL; - init_timer(&balloon_timer); - balloon_timer.data = 0; - balloon_timer.function = balloon_alarm; - #ifdef CONFIG_PROC_FS if ((balloon_pde = create_xen_proc_entry("balloon", 0644)) == NULL) { WPRINTK("Unable to create /proc/xen/balloon.\n"); --- a/drivers/xen/blkback/interface.c +++ b/drivers/xen/blkback/interface.c @@ -41,11 +41,10 @@ blkif_t *blkif_alloc(domid_t domid) { blkif_t *blkif; - blkif = kmem_cache_alloc(blkif_cachep, GFP_KERNEL); + blkif = kmem_cache_zalloc(blkif_cachep, GFP_KERNEL); if (!blkif) return ERR_PTR(-ENOMEM); - memset(blkif, 0, sizeof(*blkif)); blkif->domid = domid; spin_lock_init(&blkif->blk_ring_lock); atomic_set(&blkif->refcnt, 1); --- a/drivers/xen/blktap/interface.c +++ b/drivers/xen/blktap/interface.c @@ -41,11 +41,10 @@ blkif_t *tap_alloc_blkif(domid_t domid) { blkif_t *blkif; - blkif = kmem_cache_alloc(blkif_cachep, GFP_KERNEL); + blkif = kmem_cache_zalloc(blkif_cachep, GFP_KERNEL); if (!blkif) return ERR_PTR(-ENOMEM); - memset(blkif, 0, sizeof(*blkif)); blkif->domid = domid; spin_lock_init(&blkif->blk_ring_lock); atomic_set(&blkif->refcnt, 1); --- a/drivers/xen/blktap2/control.c +++ b/drivers/xen/blktap2/control.c @@ -145,7 +145,7 @@ blktap_control_ioctl(struct inode *inode return -ENOIOCTLCMD; } -static struct file_operations blktap_control_file_operations = { +static const struct file_operations blktap_control_file_operations = { .owner = THIS_MODULE, .ioctl = blktap_control_ioctl, }; --- a/drivers/xen/blktap2/ring.c +++ b/drivers/xen/blktap2/ring.c @@ -479,7 +479,7 @@ static unsigned int blktap_ring_poll(str return 0; } -static struct file_operations blktap_ring_file_operations = { +static const struct file_operations blktap_ring_file_operations = { .owner = THIS_MODULE, .open = blktap_ring_open, .release = blktap_ring_release, --- a/drivers/xen/core/xen_proc.c +++ b/drivers/xen/core/xen_proc.c @@ -13,11 +13,13 @@ struct proc_dir_entry *create_xen_proc_e return create_proc_entry(name, mode, xen_base); } +#ifdef MODULE EXPORT_SYMBOL_GPL(create_xen_proc_entry); +#else void remove_xen_proc_entry(const char *name) { remove_proc_entry(name, xen_base); } -EXPORT_SYMBOL_GPL(remove_xen_proc_entry); +#endif --- a/drivers/xen/netback/common.h +++ b/drivers/xen/netback/common.h @@ -100,7 +100,7 @@ typedef struct netif_st { struct timer_list tx_queue_timeout; /* Statistics */ - int nr_copied_skbs; + unsigned long nr_copied_skbs; /* Miscellaneous private stuff. */ struct list_head list; /* scheduling list */ --- a/drivers/xen/netback/interface.c +++ b/drivers/xen/netback/interface.c @@ -169,7 +169,7 @@ static const struct netif_stat { char name[ETH_GSTRING_LEN]; u16 offset; } netbk_stats[] = { - { "copied_skbs", offsetof(netif_t, nr_copied_skbs) }, + { "copied_skbs", offsetof(netif_t, nr_copied_skbs) / sizeof(long) }, }; static int netbk_get_stats_count(struct net_device *dev) @@ -180,11 +180,11 @@ static int netbk_get_stats_count(struct static void netbk_get_ethtool_stats(struct net_device *dev, struct ethtool_stats *stats, u64 * data) { - void *netif = netdev_priv(dev); + unsigned long *np = netdev_priv(dev); int i; for (i = 0; i < ARRAY_SIZE(netbk_stats); i++) - data[i] = *(int *)(netif + netbk_stats[i].offset); + data[i] = np[netbk_stats[i].offset]; } static void netbk_get_strings(struct net_device *dev, u32 stringset, u8 * data) --- a/drivers/xen/scsiback/interface.c +++ b/drivers/xen/scsiback/interface.c @@ -46,11 +46,10 @@ struct vscsibk_info *vscsibk_info_alloc( { struct vscsibk_info *info; - info = kmem_cache_alloc(scsiback_cachep, GFP_KERNEL); + info = kmem_cache_zalloc(scsiback_cachep, GFP_KERNEL); if (!info) return ERR_PTR(-ENOMEM); - memset(info, 0, sizeof(*info)); info->domid = domid; spin_lock_init(&info->ring_lock); atomic_set(&info->nr_unreplied_reqs, 0); --- a/drivers/xen/tpmback/interface.c +++ b/drivers/xen/tpmback/interface.c @@ -25,11 +25,10 @@ static tpmif_t *alloc_tpmif(domid_t domi { tpmif_t *tpmif; - tpmif = kmem_cache_alloc(tpmif_cachep, GFP_KERNEL); + tpmif = kmem_cache_zalloc(tpmif_cachep, GFP_KERNEL); if (tpmif == NULL) goto out_of_memory; - memset(tpmif, 0, sizeof (*tpmif)); tpmif->domid = domid; tpmif->status = DISCONNECTED; tpmif->bi = bi; --- a/drivers/xen/xenbus/xenbus_probe.c +++ b/drivers/xen/xenbus/xenbus_probe.c @@ -815,7 +815,6 @@ void xenbus_suspend(void) xenbus_backend_suspend(suspend_dev); xs_suspend(); } -EXPORT_SYMBOL_GPL(xenbus_suspend); void xenbus_resume(void) { @@ -825,7 +824,6 @@ void xenbus_resume(void) bus_for_each_dev(&xenbus_frontend.bus, NULL, NULL, resume_dev); xenbus_backend_resume(resume_dev); } -EXPORT_SYMBOL_GPL(xenbus_resume); void xenbus_suspend_cancel(void) { @@ -834,12 +832,15 @@ void xenbus_suspend_cancel(void) bus_for_each_dev(&xenbus_frontend.bus, NULL, NULL, suspend_cancel_dev); xenbus_backend_resume(suspend_cancel_dev); } -EXPORT_SYMBOL_GPL(xenbus_suspend_cancel); /* A flag to determine if xenstored is 'ready' (i.e. has started) */ atomic_t xenbus_xsd_state = ATOMIC_INIT(XENBUS_XSD_UNCOMMITTED); -int register_xenstore_notifier(struct notifier_block *nb) +int +#ifdef CONFIG_XEN +__init +#endif +register_xenstore_notifier(struct notifier_block *nb) { int ret = 0; @@ -851,6 +852,7 @@ int register_xenstore_notifier(struct no return ret; } +#ifndef CONFIG_XEN EXPORT_SYMBOL_GPL(register_xenstore_notifier); void unregister_xenstore_notifier(struct notifier_block *nb) @@ -858,6 +860,7 @@ void unregister_xenstore_notifier(struct blocking_notifier_chain_unregister(&xenstore_chain, nb); } EXPORT_SYMBOL_GPL(unregister_xenstore_notifier); +#endif void xenbus_probe(void *unused) --- a/include/asm-i386/mach-xen/asm/pgtable.h +++ b/include/asm-i386/mach-xen/asm/pgtable.h @@ -521,9 +521,6 @@ int direct_kernel_remap_pfn_range(unsign int create_lookup_pte_addr(struct mm_struct *mm, unsigned long address, uint64_t *ptep); -int touch_pte_range(struct mm_struct *mm, - unsigned long address, - unsigned long size); int xen_change_pte_range(struct mm_struct *mm, pmd_t *pmd, unsigned long addr, unsigned long end, pgprot_t newprot); --- a/include/asm-x86_64/mach-xen/asm/pgtable.h +++ b/include/asm-x86_64/mach-xen/asm/pgtable.h @@ -394,7 +394,6 @@ static inline int pmd_large(pmd_t pte) { /* * Level 4 access. - * Never use these in the common code. */ #define pgd_page(pgd) ((unsigned long) __va(pgd_val(pgd) & PTE_MASK)) #define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1)) @@ -543,10 +542,6 @@ int create_lookup_pte_addr(struct mm_str unsigned long address, uint64_t *ptep); -int touch_pte_range(struct mm_struct *mm, - unsigned long address, - unsigned long size); - int xen_change_pte_range(struct mm_struct *mm, pmd_t *pmd, unsigned long addr, unsigned long end, pgprot_t newprot);