Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 298729 Details for
Bug 429103
Allocations on resume path can cause deadlock due to attempting to swap
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
Patch for fix to 4.7 if applied before 5-patch set to 437423
bz429103-pre437423.patch (text/x-patch), 5.81 KB, created by
Don Dutile (Red Hat)
on 2008-03-20 18:46:05 UTC
(
hide
)
Description:
Patch for fix to 4.7 if applied before 5-patch set to 437423
Filename:
MIME Type:
Creator:
Don Dutile (Red Hat)
Created:
2008-03-20 18:46:05 UTC
Size:
5.81 KB
patch
obsolete
>--- linux-2.6.9/drivers/xen/blkfront/blkfront.c.orig 2008-03-19 22:10:51.000000000 -0400 >+++ linux-2.6.9/drivers/xen/blkfront/blkfront.c 2008-03-19 22:14:23.000000000 -0400 >@@ -208,7 +208,7 @@ static int setup_blkring(struct xenbus_d > > info->ring_ref = GRANT_INVALID_REF; > >- sring = (blkif_sring_t *)__get_free_page(GFP_KERNEL); >+ sring = (blkif_sring_t *)__get_free_page(GFP_KERNEL | __GFP_HIGH); > if (!sring) { > xenbus_dev_fatal(dev, -ENOMEM, "allocating shared ring"); > return -ENOMEM; >--- linux-2.6.9/drivers/xen/netfront/netfront.c.orig 2008-03-19 22:11:16.000000000 -0400 >+++ linux-2.6.9/drivers/xen/netfront/netfront.c 2008-03-19 22:13:14.000000000 -0400 >@@ -448,7 +448,7 @@ static int setup_device(struct xenbus_de > info->tx.sring = NULL; > info->irq = 0; > >- txs = (struct netif_tx_sring *)get_zeroed_page(GFP_KERNEL); >+ txs = (struct netif_tx_sring *)get_zeroed_page(GFP_KERNEL | __GFP_HIGH); > if (!txs) { > err = -ENOMEM; > xenbus_dev_fatal(dev, err, "allocating tx ring page"); >@@ -464,7 +464,7 @@ static int setup_device(struct xenbus_de > } > info->tx_ring_ref = err; > >- rxs = (struct netif_rx_sring *)get_zeroed_page(GFP_KERNEL); >+ rxs = (struct netif_rx_sring *)get_zeroed_page(GFP_KERNEL | __GFP_HIGH); > if (!rxs) { > err = -ENOMEM; > xenbus_dev_fatal(dev, err, "allocating rx ring page"); >--- linux-2.6.9/drivers/xen/xenbus/xenbus_probe.c.orig 2008-03-19 21:48:30.000000000 -0400 >+++ linux-2.6.9/drivers/xen/xenbus/xenbus_probe.c 2008-03-19 22:55:51.000000000 -0400 >@@ -560,18 +560,17 @@ static void xenbus_dev_release(struct de > } > > /* Simplified asprintf. */ >-char *kasprintf(const char *fmt, ...) >+char *kasprintf(gfp_t gfp, const char *fmt, ...) > { > va_list ap; > unsigned int len; > char *p, dummy[1]; > > va_start(ap, fmt); >- /* FIXME: vsnprintf has a bug, NULL should work */ > len = vsnprintf(dummy, 0, fmt, ap); > va_end(ap); > >- p = kmalloc(len + 1, GFP_KERNEL); >+ p = kmalloc(len + 1, gfp); > if (!p) > return NULL; > va_start(ap, fmt); >@@ -654,7 +653,7 @@ static int xenbus_probe_frontend(const c > char *nodename; > int err; > >- nodename = kasprintf("%s/%s/%s", xenbus_frontend.root, type, name); >+ nodename = kasprintf(GFP_KERNEL, "%s/%s/%s", xenbus_frontend.root, type, name); > if (!nodename) > return -ENOMEM; > >@@ -673,7 +672,7 @@ static int xenbus_probe_backend_unit(con > char *nodename; > int err; > >- nodename = kasprintf("%s/%s", dir, name); >+ nodename = kasprintf(GFP_KERNEL, "%s/%s", dir, name); > if (!nodename) > return -ENOMEM; > >@@ -694,7 +693,7 @@ static int xenbus_probe_backend(const ch > > DPRINTK(""); > >- nodename = kasprintf("%s/%s/%s", xenbus_backend.root, type, domid); >+ nodename = kasprintf(GFP_KERNEL, "%s/%s/%s", xenbus_backend.root, type, domid); > if (!nodename) > return -ENOMEM; > >@@ -800,7 +799,7 @@ static void dev_changed(const char *node > rootlen = strsep_len(node, '/', bus->levels); > if (rootlen < 0) > return; >- root = kasprintf("%.*s", rootlen, node); >+ root = kasprintf(GFP_KERNEL, "%.*s", rootlen, node); > if (!root) > return; > >--- linux-2.6.9/drivers/xen/xenbus/xenbus_client.c.orig 2008-03-19 21:50:40.000000000 -0400 >+++ linux-2.6.9/drivers/xen/xenbus/xenbus_client.c 2008-03-19 23:06:10.000000000 -0400 >@@ -36,7 +36,7 @@ > #include <xen/driver_util.h> > > /* xenbus_probe.c */ >-extern char *kasprintf(const char *fmt, ...); >+extern char *kasprintf(gfp_t gfp, const char *fmt, ...); > > #define DPRINTK(fmt, args...) \ > pr_debug("xenbus_client (%s:%d) " fmt ".\n", __FUNCTION__, __LINE__, ##args) >@@ -84,7 +84,7 @@ int xenbus_watch_path2(struct xenbus_dev > const char **, unsigned int)) > { > int err; >- char *state = kasprintf("%s/%s", path, path2); >+ char *state = kasprintf((GFP_KERNEL | __GFP_HIGH), "%s/%s", path, path2); > if (!state) { > xenbus_dev_fatal(dev, -ENOMEM, "allocating path for watch"); > return -ENOMEM; >@@ -152,7 +152,7 @@ EXPORT_SYMBOL_GPL(xenbus_frontend_closed > */ > static char *error_path(struct xenbus_device *dev) > { >- return kasprintf("error/%s", dev->nodename); >+ return kasprintf((GFP_KERNEL | __GFP_HIGH), "error/%s", dev->nodename); > } > > >--- linux-2.6.9/drivers/xen/xenbus/xenbus_xs.c.orig 2008-03-19 22:00:00.000000000 -0400 >+++ linux-2.6.9/drivers/xen/xenbus/xenbus_xs.c 2008-03-19 22:05:12.000000000 -0400 >@@ -46,7 +46,7 @@ > #include "xenbus_comms.h" > > /* xenbus_probe.c */ >-extern char *kasprintf(const char *fmt, ...); >+extern char *kasprintf(gfp_t gfp, const char *fmt, ...); > > struct xs_stored_msg { > struct list_head list; >@@ -289,9 +289,9 @@ static char *join(const char *dir, const > char *buffer; > > if (strlen(name) == 0) >- buffer = kasprintf("%s", dir); >+ buffer = kasprintf((GFP_KERNEL | __GFP_HIGH), "%s", dir); > else >- buffer = kasprintf("%s/%s", dir, name); >+ buffer = kasprintf((GFP_KERNEL | __GFP_HIGH), "%s/%s", dir, name); > return (!buffer) ? ERR_PTR(-ENOMEM) : buffer; > } > >@@ -303,7 +303,7 @@ static char **split(char *strings, unsig > *num = count_strings(strings, len); > > /* Transfer to one big alloc for easy freeing. */ >- ret = kmalloc(*num * sizeof(char *) + len, GFP_KERNEL); >+ ret = kmalloc(*num * sizeof(char *) + len, (GFP_KERNEL | __GFP_HIGH)); > if (!ret) { > kfree(strings); > return ERR_PTR(-ENOMEM); >@@ -504,7 +504,7 @@ int xenbus_printf(struct xenbus_transact > #define PRINTF_BUFFER_SIZE 4096 > char *printf_buffer; > >- printf_buffer = kmalloc(PRINTF_BUFFER_SIZE, GFP_KERNEL); >+ printf_buffer = kmalloc(PRINTF_BUFFER_SIZE, (GFP_KERNEL | __GFP_HIGH)); > if (printf_buffer == NULL) > return -ENOMEM; > >@@ -754,7 +754,7 @@ static int process_msg(void) > char *body; > int err; > >- msg = kmalloc(sizeof(*msg), GFP_KERNEL); >+ msg = kmalloc(sizeof(*msg), (GFP_KERNEL | __GFP_HIGH)); > if (msg == NULL) > return -ENOMEM; > >@@ -764,7 +764,7 @@ static int process_msg(void) > return err; > } > >- body = kmalloc(msg->hdr.len + 1, GFP_KERNEL); >+ body = kmalloc(msg->hdr.len + 1, (GFP_KERNEL | __GFP_HIGH)); > if (body == NULL) { > kfree(msg); > return -ENOMEM;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 429103
:
291978
|
291979
|
292483
| 298729 |
298730
|
299451
|
299452
|
306545