aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/sparc/kernel/mdesc.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/arch/sparc/kernel/mdesc.c b/arch/sparc/kernel/mdesc.c
index 99632a87e697..26c80e18d7b1 100644
--- a/arch/sparc/kernel/mdesc.c
+++ b/arch/sparc/kernel/mdesc.c
@@ -130,26 +130,26 @@ static struct mdesc_mem_ops memblock_mdesc_ops = {
130static struct mdesc_handle *mdesc_kmalloc(unsigned int mdesc_size) 130static struct mdesc_handle *mdesc_kmalloc(unsigned int mdesc_size)
131{ 131{
132 unsigned int handle_size; 132 unsigned int handle_size;
133 struct mdesc_handle *hp;
134 unsigned long addr;
133 void *base; 135 void *base;
134 136
135 handle_size = (sizeof(struct mdesc_handle) - 137 handle_size = (sizeof(struct mdesc_handle) -
136 sizeof(struct mdesc_hdr) + 138 sizeof(struct mdesc_hdr) +
137 mdesc_size); 139 mdesc_size);
138 140
141 /*
142 * Allocation has to succeed because mdesc update would be missed
143 * and such events are not retransmitted.
144 */
139 base = kmalloc(handle_size + 15, GFP_KERNEL | __GFP_NOFAIL); 145 base = kmalloc(handle_size + 15, GFP_KERNEL | __GFP_NOFAIL);
140 if (base) { 146 addr = (unsigned long)base;
141 struct mdesc_handle *hp; 147 addr = (addr + 15UL) & ~15UL;
142 unsigned long addr; 148 hp = (struct mdesc_handle *) addr;
143
144 addr = (unsigned long)base;
145 addr = (addr + 15UL) & ~15UL;
146 hp = (struct mdesc_handle *) addr;
147 149
148 mdesc_handle_init(hp, handle_size, base); 150 mdesc_handle_init(hp, handle_size, base);
149 return hp;
150 }
151 151
152 return NULL; 152 return hp;
153} 153}
154 154
155static void mdesc_kfree(struct mdesc_handle *hp) 155static void mdesc_kfree(struct mdesc_handle *hp)