From 8af885f03459e77343b6122e24c8483dc8bc28fd Mon Sep 17 00:00:00 2001 From: Alexandre Bounine Date: Wed, 27 Oct 2010 15:34:32 -0700 Subject: [PATCH] --- yaml --- r: 218597 b: refs/heads/master c: e274e0ed0a2ac31d5eaf7c891e4e1d99197517b2 h: refs/heads/master i: 218595: 6be0f7deee92fa97d49ce77514a54b555bbd819a v: v3 --- [refs] | 2 +- trunk/drivers/rapidio/rio-scan.c | 6 ++++++ trunk/drivers/rapidio/rio.c | 2 +- trunk/drivers/rapidio/rio.h | 2 ++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 2a3a11861d15..3f821064f165 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6429cd49f45450cd77a57b70b0dfa98fe2794da0 +refs/heads/master: e274e0ed0a2ac31d5eaf7c891e4e1d99197517b2 diff --git a/trunk/drivers/rapidio/rio-scan.c b/trunk/drivers/rapidio/rio-scan.c index d2ea01872d6a..e3efdf93df5a 100644 --- a/trunk/drivers/rapidio/rio-scan.c +++ b/trunk/drivers/rapidio/rio-scan.c @@ -762,6 +762,12 @@ static int __devinit rio_enum_peer(struct rio_net *net, struct rio_mport *port, u16 destid; int tmp; + if (rio_mport_chk_dev_access(port, + RIO_ANY_DESTID(port->sys_size), hopcount)) { + pr_debug("RIO: device access check failed\n"); + return -1; + } + if (rio_get_host_deviceid_lock(port, hopcount) == port->host_deviceid) { pr_debug("RIO: PE already discovered by this host\n"); /* diff --git a/trunk/drivers/rapidio/rio.c b/trunk/drivers/rapidio/rio.c index aefc2a0004d4..fa5e3cbe4c83 100644 --- a/trunk/drivers/rapidio/rio.c +++ b/trunk/drivers/rapidio/rio.c @@ -546,7 +546,7 @@ rio_chk_dev_route(struct rio_dev *rdev, struct rio_dev **nrdev, int *npnum) * @destid: Device destination ID in network * @hopcount: Number of hops into the network */ -static int +int rio_mport_chk_dev_access(struct rio_mport *mport, u16 destid, u8 hopcount) { int i = 0; diff --git a/trunk/drivers/rapidio/rio.h b/trunk/drivers/rapidio/rio.h index bc71ba1d239e..d249a1205c7d 100644 --- a/trunk/drivers/rapidio/rio.h +++ b/trunk/drivers/rapidio/rio.h @@ -24,6 +24,8 @@ extern u32 rio_mport_get_physefb(struct rio_mport *port, int local, u16 destid, u8 hopcount); extern u32 rio_mport_get_efb(struct rio_mport *port, int local, u16 destid, u8 hopcount, u32 from); +extern int rio_mport_chk_dev_access(struct rio_mport *mport, u16 destid, + u8 hopcount); extern int rio_create_sysfs_dev_files(struct rio_dev *rdev); extern int rio_enum_mport(struct rio_mport *mport); extern int rio_disc_mport(struct rio_mport *mport);