Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 699
b: refs/heads/master
c: 15439d7
h: refs/heads/master
i:
  697: 9cbe828
  695: 07280a0
v: v3
  • Loading branch information
Martin Schwidefsky authored and Linus Torvalds committed May 1, 2005
1 parent d332ca5 commit f63ad5e
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0b642ede47969d4180b0922d982777fe64379228
refs/heads/master: 15439d74f621ff8252b53136d259781148e6e768
9 changes: 8 additions & 1 deletion trunk/arch/s390/mm/cmm.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@
#include <asm/pgalloc.h>
#include <asm/uaccess.h>

static char *sender = "VMRMSVM";
module_param(sender, charp, 0);
MODULE_PARM_DESC(sender,
"Guest name that may send SMSG messages (default VMRMSVM)");

#include "../../../drivers/s390/net/smsgiucv.h"

#define CMM_NR_PAGES ((PAGE_SIZE / sizeof(unsigned long)) - 2)
Expand Down Expand Up @@ -367,10 +372,12 @@ static struct ctl_table cmm_dir_table[] = {
#ifdef CONFIG_CMM_IUCV
#define SMSG_PREFIX "CMM"
static void
cmm_smsg_target(char *msg)
cmm_smsg_target(char *from, char *msg)
{
long pages, seconds;

if (strlen(sender) > 0 && strcmp(from, sender) != 0)
return;
if (!cmm_skip_blanks(msg + strlen(SMSG_PREFIX), &msg))
return;
if (strncmp(msg, "SHRINK", 6) == 0) {
Expand Down
19 changes: 14 additions & 5 deletions trunk/drivers/s390/net/smsgiucv.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ struct smsg_callback {
struct list_head list;
char *prefix;
int len;
void (*callback)(char *str);
void (*callback)(char *from, char *str);
};

MODULE_AUTHOR
Expand All @@ -55,8 +55,9 @@ smsg_message_pending(iucv_MessagePending *eib, void *pgm_data)
{
struct smsg_callback *cb;
unsigned char *msg;
unsigned char sender[9];
unsigned short len;
int rc;
int rc, i;

len = eib->ln1msg2.ipbfln1f;
msg = kmalloc(len + 1, GFP_ATOMIC|GFP_DMA);
Expand All @@ -69,10 +70,18 @@ smsg_message_pending(iucv_MessagePending *eib, void *pgm_data)
if (rc == 0) {
msg[len] = 0;
EBCASC(msg, len);
memcpy(sender, msg, 8);
sender[8] = 0;
/* Remove trailing whitespace from the sender name. */
for (i = 7; i >= 0; i--) {
if (sender[i] != ' ' && sender[i] != '\t')
break;
sender[i] = 0;
}
spin_lock(&smsg_list_lock);
list_for_each_entry(cb, &smsg_list, list)
if (strncmp(msg + 8, cb->prefix, cb->len) == 0) {
cb->callback(msg + 8);
cb->callback(sender, msg + 8);
break;
}
spin_unlock(&smsg_list_lock);
Expand All @@ -91,7 +100,7 @@ static struct device_driver smsg_driver = {
};

int
smsg_register_callback(char *prefix, void (*callback)(char *str))
smsg_register_callback(char *prefix, void (*callback)(char *from, char *str))
{
struct smsg_callback *cb;

Expand All @@ -108,7 +117,7 @@ smsg_register_callback(char *prefix, void (*callback)(char *str))
}

void
smsg_unregister_callback(char *prefix, void (*callback)(char *str))
smsg_unregister_callback(char *prefix, void (*callback)(char *from, char *str))
{
struct smsg_callback *cb, *tmp;

Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/s390/net/smsgiucv.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
*/

int smsg_register_callback(char *, void (*)(char *));
void smsg_unregister_callback(char *, void (*)(char *));
int smsg_register_callback(char *, void (*)(char *, char *));
void smsg_unregister_callback(char *, void (*)(char *, char *));

0 comments on commit f63ad5e

Please sign in to comment.