Kexec Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] makedumpfile/eppic: Add README for eppic scripts
@ 2014-03-06 11:06 Aruna Balakrishnaiah
  2014-03-06 11:07 ` [PATCH 2/2] makedumpfile/eppic: Install sample " Aruna Balakrishnaiah
  2014-03-10  5:26 ` [PATCH 1/2] makedumpfile/eppic: Add README for " Atsushi Kumagai
  0 siblings, 2 replies; 3+ messages in thread
From: Aruna Balakrishnaiah @ 2014-03-06 11:06 UTC (permalink / raw)
  To: kexec; +Cc: kumagai-atsushi

Signed-off-by: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
---
 eppic_scripts/README |  294 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 294 insertions(+)
 create mode 100644 eppic_scripts/README

diff --git a/eppic_scripts/README b/eppic_scripts/README
new file mode 100644
index 0000000..040b3ba
--- /dev/null
+++ b/eppic_scripts/README
@@ -0,0 +1,294 @@
+===================================
+ Eppic scripts README
+==================================
+
+The eppic scripts are based on the fedora 19 kernel.
+
+1. Eppic script: proc_names.c
+   Description: Scrubs executable name of each user process
+
+   Explanation:
+       Walks all processes via the tasks lists starting from init_task
+
+       extern struct task_struct init_task;
+
+       struct task_struct {
+            ...
+            struct list_head tasks;
+            ...
+            char comm[TASK_COMM_LEN]; /* executable name excluding path */
+            ...
+       };
+
+      For each user space process clear executable name
+
+       struct task_struct *tsk;
+       list_for_each_entry(tsk, &init_task, tasks) {
+           if (tsk->mm)
+               memset(tsk->comm, 0, TASK_COMM_LEN);
+       }
+
+
+2. Eppic script: dir_names.c
+   Description: Scrubs filenames of cached dentries
+
+   Explanation:
+       i) iterate over all mounted filesystems
+
+       struct vfsmount {
+            struct list_head mnt_hash;
+            ...
+            struct dentry *mnt_root;        /* root of the mounted tree */
+            ...
+       };
+
+       for (u = 0; i < HASH_SIZE; u++) {
+           struct vfsmount *mnt;
+           list_for_each_entry(mnt, &mount_hashtable[u], mnt_hash) {
+              struct dentry *root;
+              root = mnt->mnt_root;
+              ...
+           }
+       }
+
+       ii) recursively walk the dentries of each tree starting from root dentry
+           and clear d_name and d_iname
+
+       struct dentry {
+            ...
+            struct qstr d_name;
+            ...
+            unsigned char d_iname[DNAME_INLINE_LEN];        /* small names */
+            ...
+            struct list_head d_subdirs;     /* our children */
+            ...
+       };
+
+       void walk_dentries(struct dentry *dentry)
+       {
+           struct dentry *child;
+           memset(dentry->d_iname, 0, DNAME_INLINE_LEN);
+           memset(dentry->d_name.name, 0, dentry->d_name.len);
+           list_for_each_entry(child, &dentry->d_subdirs, d_u.d_child)
+               walk_dentries(child);
+       }
+
+3. Eppic script: keyring.c
+   Description: Scrubs all entries in the keyring
+
+   Explanation:
+       Scan the keyring_name_hash hash table
+
+       static struct list_head keyring_name_hash[KEYRING_NAME_HASH_SIZE];
+
+       for (i = 0; i < KEYRING_NAME_HASH_SIZE; i++)
+           if (!list_empty(&keyring_name_hash[i])) {
+               ...
+           }
+
+       For each non-empty list walk all keyring entries
+
+       struct key {
+            ...
+            struct key_type         *type;          /* type of key */
+            ...
+            unsigned short          datalen;        /* payload data length */
+            ...
+            union {
+                    struct list_head        link;
+                    ...
+            } type_data;
+            ...
+            union {
+                    unsigned long           value;
+                    void __rcu              *rcudata;
+                    void                    *data;
+                    struct keyring_list __rcu *subscriptions;
+            } payload;
+       };
+
+       struct key *key;
+       list_for_each_entry(key, &keyring_name_hash[i], type_data.link) {
+           ...
+       }
+
+       Clear value/rcudata/data dependent on the type of the key.
+
+4. Eppic script: ap_messages.c
+   Description: Clear the message data of all ap_bus requests
+
+   Explanation:
+       Walk all devices in the LIST_HEAD(ap_device_list);
+
+       struct ap_device {
+            ...
+            struct list_head list;          /* private list of all AP devices. */
+           ...
+            struct list_head pendingq;      /* List of message sent to AP queue. */
+            int pendingq_count;             /* # requests on pendingq list. */
+            struct list_head requestq;      /* List of message yet to be sent. */
+            int requestq_count;             /* # requests on requestq list. */
+            ...
+       };
+
+       struct ap_device *device;
+       list_for_each_entry(device, &ap_device_list, list) {
+            ...
+       }
+
+       For each ap device walk the pendingq and requestq list
+
+       struct ap_message {
+            struct list_head list;          /* Request queueing. */
+            ...
+            void *message;                  /* Pointer to message buffer. */
+            size_t length;                  /* Message length. */
+            ...
+       };
+
+       struct ap_message *apmsg;
+       list_for_each_entry(apmsg, &device->pendingq, list) {
+            ...
+       }
+       list_for_each_entry(apmsg, &device->requestq, list) {
+            ...
+       }
+
+       For each message in pendingq and requestq clear the message
+
+       memset(apmsg->message, 0, apmsg->length);
+
+5. Eppic script: tcp_sk_buf.c
+   Description: Scrub data in tcp socket buffers
+
+   Explanation:
+	 Find tcp domain sockets (struct sock *sk)
+
+         tcp sockets:
+
+           Iterate from 0 to INET_LHTABLE_SIZE and get inet_list_hashbucket from
+           tcp_hash_info.listening_hash[<index>]
+
+	    for (i = 0; i < INET_LHTABLE_SIZE; i++) {
+                 struct inet_listen_hashbucket *ilb = &tcp_hashinfo.listening_hash[i];
+             }
+           For each hash bucket iterate over ilb->head null list to get sockets:
+             struct sock *sk;
+             sk_nulls_for_each(sk, node, &ilb->head) {
+                 ...
+             }
+
+
+           For each socket iterate over the socket buffers in
+           sk_receive_queue and sk_write_queue:
+
+           struct sock {
+                ...
+                struct sk_buff_head     sk_receive_queue;
+                ...
+                struct sk_buff_head     sk_write_queue;
+                ...
+           };
+
+           struct sk_buff_head {
+                struct sk_buff  *next;
+                struct sk_buff  *prev;
+           };
+
+           For each struct sk_buff in the two lists clear the memory referenced
+           by skb->data / skb->data_len:
+
+           struct sk_buff {
+                ...
+                unsigned int            data_len;
+                ...
+                unsigned char           *data;
+                ...
+           };
+
+6. Eppic script: udp_sk_buf.c
+   Description: Scrub data of udp socket buffers
+
+   Explanation:
+     Find all udp sockets (struct sock *sk)
+
+     udp sockets:
+
+       Iterate from 0 to udp_table->mask and get udp_hslot from hash table:
+         for (i = 0; i < udp->table->mask; i++) {
+             struct udp_hslot *hslot = udp_table->hash[i];
+             ...
+         }
+
+       For each hslot iterate over hslot->head null list to get sockets:
+         struct sock *sk;
+         sk_nulls_for_each(sk, node, &hslot->head) {
+             ...
+         }
+
+      For each socket iterate over the socket buffers in
+      sk_receive_queue and sk_write_queue.
+
+      For each struct sk_buff in the two lists clear the memory referenced
+      by skb->data / skb->data_len.
+
+7. Eppic script: unix_sk_buf.c
+   Description: Scrub data of unix socket buffers
+
+   Explanation:
+       Iterate from 0 to UNIX_HASH_SIZE and then walk the hlist in
+       for (i = 0; i < UNIX_HASH_SIZE; i++) {
+             struct list_head *list = &unix_socket_table[i];
+             ...
+       }
+
+       Walk each non-empty list in unix_socket_table
+         struct sock *sk;
+         sk_for_each(sk, node, &unix_socket_table[i])
+
+       For each socket iterate over the socket buffers in
+       sk_receive_queue and sk_write_queue.
+
+       For each struct sk_buff in the two lists clear the memory referenced
+       by skb->data / skb->data_len.
+
+8. Eppic script: vhost_net_buffers.c
+   Description: Scrub socket buffers of guest network I/O
+
+   Explanation:
+	 Scrub socket buffers of guest network I/O
+
+         vhost_net instance will be attached to the file's private data.
+         To get to the right file check the fdtable for each task, if the file
+         has registered its fops with vhost_net_open, if so we can retreive the
+         file's private data.
+
+         if (task->files->fdt->fd[i]->f_op->open == &vhost_net_open)
+                struct vhost_net *net = f->private_data;
+
+         struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_MAX];
+         struct vhost_virtqueue *vq = &nvq->vq;
+         struct socket *sock = vq->private_data;
+         struct sock *sk = sock->sk;
+
+         struct sk_buff *next = sk->sk_receive_queue.next;
+         struct sk_buff *prev = sk->sk_receive_queue.prev;
+
+         Scrub next->data till the end of the sk_receive_queue and
+         sk_write_queue list
+
+
+9. Eppic script: vhost_scsi_buffers.c
+   Description: Scrub buffers involved in guest block I/O
+
+   Explanation:
+        vhost_scsi instance will be attached to the file's private data.
+        to get to the right file check the fdtable for each task, if the
+	file has registered its fops with vhost_net_open, if so we can
+	retreive the file's private data.
+
+        if (task->files->fdt->fd[i]->f_op->open == &vhost_scsi_open)
+            vhost_scsi *vs = task->files->fdt->fd[i]->private_data;
+
+        struct vhost_virtqueue *vq = (struct vhost_virtqueue *)vs->vqs[i].vq;
+        scrub vq->iov[j].iov_base


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] makedumpfile/eppic: Install sample eppic scripts
  2014-03-06 11:06 [PATCH 1/2] makedumpfile/eppic: Add README for eppic scripts Aruna Balakrishnaiah
@ 2014-03-06 11:07 ` Aruna Balakrishnaiah
  2014-03-10  5:26 ` [PATCH 1/2] makedumpfile/eppic: Add README for " Atsushi Kumagai
  1 sibling, 0 replies; 3+ messages in thread
From: Aruna Balakrishnaiah @ 2014-03-06 11:07 UTC (permalink / raw)
  To: kexec; +Cc: kumagai-atsushi

Install sample eppic scripts in the documentation directory

Signed-off-by: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
---
 Makefile          |    2 ++
 makedumpfile.spec |    2 ++
 2 files changed, 4 insertions(+)

diff --git a/Makefile b/Makefile
index 2f4845c..6ee2da5 100644
--- a/Makefile
+++ b/Makefile
@@ -91,3 +91,5 @@ install:
 	install -m 644 -t ${DESTDIR}/usr/share/man/man8 makedumpfile.8.gz
 	install -m 644 -t ${DESTDIR}/usr/share/man/man5 makedumpfile.conf.5.gz
 	install -m 644 -D makedumpfile.conf ${DESTDIR}/etc/makedumpfile.conf.sample
+	mkdir -p ${DESTDIR}/usr/share/makedumpfile-${VERSION}/eppic_scripts
+	install -m 644 -t ${DESTDIR}/usr/share/makedumpfile-${VERSION}/eppic_scripts/ eppic_scripts/*
diff --git a/makedumpfile.spec b/makedumpfile.spec
index c433730..f076bb6 100644
--- a/makedumpfile.spec
+++ b/makedumpfile.spec
@@ -28,6 +28,7 @@ mkdir -p %{buildroot}/usr/sbin
 mkdir -p %{buildroot}/etc
 mkdir -p %{buildroot}/usr/share/man/man5
 mkdir -p %{buildroot}/usr/share/man/man8
+mkdir -p %{buildroot}/usr/share/%{name}-%{version}/eppic-scripts/
 make install DESTDIR=%{buildroot}
 
 %clean
@@ -39,6 +40,7 @@ rm -rf %{buildroot}
 /usr/sbin/makedumpfile-R.pl
 /usr/share/man/man5/makedumpfile.conf.5.gz
 /usr/share/man/man8/makedumpfile.8.gz
+/usr/share/%{name}-%{version}/eppic_scripts/
 
 %changelog
 * Wed Dec 18 2013 Atsushi Kumagai <kumagai-atsushi@mxc.nes.nec.co.jp>


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* RE: [PATCH 1/2] makedumpfile/eppic: Add README for eppic scripts
  2014-03-06 11:06 [PATCH 1/2] makedumpfile/eppic: Add README for eppic scripts Aruna Balakrishnaiah
  2014-03-06 11:07 ` [PATCH 2/2] makedumpfile/eppic: Install sample " Aruna Balakrishnaiah
@ 2014-03-10  5:26 ` Atsushi Kumagai
  1 sibling, 0 replies; 3+ messages in thread
From: Atsushi Kumagai @ 2014-03-10  5:26 UTC (permalink / raw)
  To: aruna@linux.vnet.ibm.com; +Cc: kexec@lists.infradead.org

>Signed-off-by: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
>---
> eppic_scripts/README |  294 ++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 294 insertions(+)
> create mode 100644 eppic_scripts/README

Thanks Aruna, I'll merge the first ten patches except [10/10]
and this two patches into v1.5.6 as:

  [PATCH 01/11] eppic: Scrub executable name for each user process. 
  [PATCH 02/11] eppic: Scrub filenames of cached dentries.
  [PATCH 03/11] eppic: Scrub all entries in the keyring. 
  [PATCH 04/11] eppic: Clear the message data of all ap_bus requests. 
  [PATCH 05/11] eppic: Scrub data in tcp socket buffers.
  [PATCH 06/11] eppic: Scrub data of udp socket buffers.
  [PATCH 07/11] eppic: Scrub data of unix socket buffers.
  [PATCH 08/11] eppic: Scrub socket buffers of guest network I/O.
  [PATCH 09/11] eppic: Scrub buffers involved in guest block I/O.
  [PATCH 10/11] eppic: Add README for eppic scripts.
  [PATCH 11/11] eppic: Install sample eppic scripts.


Thanks
Atsushi Kumagai

>diff --git a/eppic_scripts/README b/eppic_scripts/README
>new file mode 100644
>index 0000000..040b3ba
>--- /dev/null
>+++ b/eppic_scripts/README
>@@ -0,0 +1,294 @@
>+===================================
>+ Eppic scripts README
>+==================================
>+
>+The eppic scripts are based on the fedora 19 kernel.
>+
>+1. Eppic script: proc_names.c
>+   Description: Scrubs executable name of each user process
>+
>+   Explanation:
>+       Walks all processes via the tasks lists starting from init_task
>+
>+       extern struct task_struct init_task;
>+
>+       struct task_struct {
>+            ...
>+            struct list_head tasks;
>+            ...
>+            char comm[TASK_COMM_LEN]; /* executable name excluding path */
>+            ...
>+       };
>+
>+      For each user space process clear executable name
>+
>+       struct task_struct *tsk;
>+       list_for_each_entry(tsk, &init_task, tasks) {
>+           if (tsk->mm)
>+               memset(tsk->comm, 0, TASK_COMM_LEN);
>+       }
>+
>+
>+2. Eppic script: dir_names.c
>+   Description: Scrubs filenames of cached dentries
>+
>+   Explanation:
>+       i) iterate over all mounted filesystems
>+
>+       struct vfsmount {
>+            struct list_head mnt_hash;
>+            ...
>+            struct dentry *mnt_root;        /* root of the mounted tree */
>+            ...
>+       };
>+
>+       for (u = 0; i < HASH_SIZE; u++) {
>+           struct vfsmount *mnt;
>+           list_for_each_entry(mnt, &mount_hashtable[u], mnt_hash) {
>+              struct dentry *root;
>+              root = mnt->mnt_root;
>+              ...
>+           }
>+       }
>+
>+       ii) recursively walk the dentries of each tree starting from root dentry
>+           and clear d_name and d_iname
>+
>+       struct dentry {
>+            ...
>+            struct qstr d_name;
>+            ...
>+            unsigned char d_iname[DNAME_INLINE_LEN];        /* small names */
>+            ...
>+            struct list_head d_subdirs;     /* our children */
>+            ...
>+       };
>+
>+       void walk_dentries(struct dentry *dentry)
>+       {
>+           struct dentry *child;
>+           memset(dentry->d_iname, 0, DNAME_INLINE_LEN);
>+           memset(dentry->d_name.name, 0, dentry->d_name.len);
>+           list_for_each_entry(child, &dentry->d_subdirs, d_u.d_child)
>+               walk_dentries(child);
>+       }
>+
>+3. Eppic script: keyring.c
>+   Description: Scrubs all entries in the keyring
>+
>+   Explanation:
>+       Scan the keyring_name_hash hash table
>+
>+       static struct list_head keyring_name_hash[KEYRING_NAME_HASH_SIZE];
>+
>+       for (i = 0; i < KEYRING_NAME_HASH_SIZE; i++)
>+           if (!list_empty(&keyring_name_hash[i])) {
>+               ...
>+           }
>+
>+       For each non-empty list walk all keyring entries
>+
>+       struct key {
>+            ...
>+            struct key_type         *type;          /* type of key */
>+            ...
>+            unsigned short          datalen;        /* payload data length */
>+            ...
>+            union {
>+                    struct list_head        link;
>+                    ...
>+            } type_data;
>+            ...
>+            union {
>+                    unsigned long           value;
>+                    void __rcu              *rcudata;
>+                    void                    *data;
>+                    struct keyring_list __rcu *subscriptions;
>+            } payload;
>+       };
>+
>+       struct key *key;
>+       list_for_each_entry(key, &keyring_name_hash[i], type_data.link) {
>+           ...
>+       }
>+
>+       Clear value/rcudata/data dependent on the type of the key.
>+
>+4. Eppic script: ap_messages.c
>+   Description: Clear the message data of all ap_bus requests
>+
>+   Explanation:
>+       Walk all devices in the LIST_HEAD(ap_device_list);
>+
>+       struct ap_device {
>+            ...
>+            struct list_head list;          /* private list of all AP devices. */
>+           ...
>+            struct list_head pendingq;      /* List of message sent to AP queue. */
>+            int pendingq_count;             /* # requests on pendingq list. */
>+            struct list_head requestq;      /* List of message yet to be sent. */
>+            int requestq_count;             /* # requests on requestq list. */
>+            ...
>+       };
>+
>+       struct ap_device *device;
>+       list_for_each_entry(device, &ap_device_list, list) {
>+            ...
>+       }
>+
>+       For each ap device walk the pendingq and requestq list
>+
>+       struct ap_message {
>+            struct list_head list;          /* Request queueing. */
>+            ...
>+            void *message;                  /* Pointer to message buffer. */
>+            size_t length;                  /* Message length. */
>+            ...
>+       };
>+
>+       struct ap_message *apmsg;
>+       list_for_each_entry(apmsg, &device->pendingq, list) {
>+            ...
>+       }
>+       list_for_each_entry(apmsg, &device->requestq, list) {
>+            ...
>+       }
>+
>+       For each message in pendingq and requestq clear the message
>+
>+       memset(apmsg->message, 0, apmsg->length);
>+
>+5. Eppic script: tcp_sk_buf.c
>+   Description: Scrub data in tcp socket buffers
>+
>+   Explanation:
>+	 Find tcp domain sockets (struct sock *sk)
>+
>+         tcp sockets:
>+
>+           Iterate from 0 to INET_LHTABLE_SIZE and get inet_list_hashbucket from
>+           tcp_hash_info.listening_hash[<index>]
>+
>+	    for (i = 0; i < INET_LHTABLE_SIZE; i++) {
>+                 struct inet_listen_hashbucket *ilb = &tcp_hashinfo.listening_hash[i];
>+             }
>+           For each hash bucket iterate over ilb->head null list to get sockets:
>+             struct sock *sk;
>+             sk_nulls_for_each(sk, node, &ilb->head) {
>+                 ...
>+             }
>+
>+
>+           For each socket iterate over the socket buffers in
>+           sk_receive_queue and sk_write_queue:
>+
>+           struct sock {
>+                ...
>+                struct sk_buff_head     sk_receive_queue;
>+                ...
>+                struct sk_buff_head     sk_write_queue;
>+                ...
>+           };
>+
>+           struct sk_buff_head {
>+                struct sk_buff  *next;
>+                struct sk_buff  *prev;
>+           };
>+
>+           For each struct sk_buff in the two lists clear the memory referenced
>+           by skb->data / skb->data_len:
>+
>+           struct sk_buff {
>+                ...
>+                unsigned int            data_len;
>+                ...
>+                unsigned char           *data;
>+                ...
>+           };
>+
>+6. Eppic script: udp_sk_buf.c
>+   Description: Scrub data of udp socket buffers
>+
>+   Explanation:
>+     Find all udp sockets (struct sock *sk)
>+
>+     udp sockets:
>+
>+       Iterate from 0 to udp_table->mask and get udp_hslot from hash table:
>+         for (i = 0; i < udp->table->mask; i++) {
>+             struct udp_hslot *hslot = udp_table->hash[i];
>+             ...
>+         }
>+
>+       For each hslot iterate over hslot->head null list to get sockets:
>+         struct sock *sk;
>+         sk_nulls_for_each(sk, node, &hslot->head) {
>+             ...
>+         }
>+
>+      For each socket iterate over the socket buffers in
>+      sk_receive_queue and sk_write_queue.
>+
>+      For each struct sk_buff in the two lists clear the memory referenced
>+      by skb->data / skb->data_len.
>+
>+7. Eppic script: unix_sk_buf.c
>+   Description: Scrub data of unix socket buffers
>+
>+   Explanation:
>+       Iterate from 0 to UNIX_HASH_SIZE and then walk the hlist in
>+       for (i = 0; i < UNIX_HASH_SIZE; i++) {
>+             struct list_head *list = &unix_socket_table[i];
>+             ...
>+       }
>+
>+       Walk each non-empty list in unix_socket_table
>+         struct sock *sk;
>+         sk_for_each(sk, node, &unix_socket_table[i])
>+
>+       For each socket iterate over the socket buffers in
>+       sk_receive_queue and sk_write_queue.
>+
>+       For each struct sk_buff in the two lists clear the memory referenced
>+       by skb->data / skb->data_len.
>+
>+8. Eppic script: vhost_net_buffers.c
>+   Description: Scrub socket buffers of guest network I/O
>+
>+   Explanation:
>+	 Scrub socket buffers of guest network I/O
>+
>+         vhost_net instance will be attached to the file's private data.
>+         To get to the right file check the fdtable for each task, if the file
>+         has registered its fops with vhost_net_open, if so we can retreive the
>+         file's private data.
>+
>+         if (task->files->fdt->fd[i]->f_op->open == &vhost_net_open)
>+                struct vhost_net *net = f->private_data;
>+
>+         struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_MAX];
>+         struct vhost_virtqueue *vq = &nvq->vq;
>+         struct socket *sock = vq->private_data;
>+         struct sock *sk = sock->sk;
>+
>+         struct sk_buff *next = sk->sk_receive_queue.next;
>+         struct sk_buff *prev = sk->sk_receive_queue.prev;
>+
>+         Scrub next->data till the end of the sk_receive_queue and
>+         sk_write_queue list
>+
>+
>+9. Eppic script: vhost_scsi_buffers.c
>+   Description: Scrub buffers involved in guest block I/O
>+
>+   Explanation:
>+        vhost_scsi instance will be attached to the file's private data.
>+        to get to the right file check the fdtable for each task, if the
>+	file has registered its fops with vhost_net_open, if so we can
>+	retreive the file's private data.
>+
>+        if (task->files->fdt->fd[i]->f_op->open == &vhost_scsi_open)
>+            vhost_scsi *vs = task->files->fdt->fd[i]->private_data;
>+
>+        struct vhost_virtqueue *vq = (struct vhost_virtqueue *)vs->vqs[i].vq;
>+        scrub vq->iov[j].iov_base

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-03-10  5:30 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-06 11:06 [PATCH 1/2] makedumpfile/eppic: Add README for eppic scripts Aruna Balakrishnaiah
2014-03-06 11:07 ` [PATCH 2/2] makedumpfile/eppic: Install sample " Aruna Balakrishnaiah
2014-03-10  5:26 ` [PATCH 1/2] makedumpfile/eppic: Add README for " Atsushi Kumagai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox