diff options
-rw-r--r-- | arch/sparc/kernel/mdesc.c | 22 |
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 = { | |||
130 | static struct mdesc_handle *mdesc_kmalloc(unsigned int mdesc_size) | 130 | static 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 | ||
155 | static void mdesc_kfree(struct mdesc_handle *hp) | 155 | static void mdesc_kfree(struct mdesc_handle *hp) |