summaryrefslogtreecommitdiffstats
path: root/tapset/socket.stp
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-08-28 14:44:06 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-08-28 14:44:06 -0400
commit30f926f0b0a198dd416ea735353e852a7ee79d69 (patch)
tree7c924e8de6a9a38ee904d9793f0bafffc00b8d85 /tapset/socket.stp
parentfb84c077272764f8cb000e9b02572fb7c9cac24f (diff)
parent84f00e279d98edba986225386c7183db3c5968b0 (diff)
downloadsystemtap-steved-30f926f0b0a198dd416ea735353e852a7ee79d69.tar.gz
systemtap-steved-30f926f0b0a198dd416ea735353e852a7ee79d69.tar.xz
systemtap-steved-30f926f0b0a198dd416ea735353e852a7ee79d69.zip
Merge commit 'origin/master' into pr4225
* commit 'origin/master': PR5686: correct regression in semok/optimize.stp trailing whitespace removal, as approved by emacs fix global-var array index rendering fix NEWS to refer to simpler context.stp tapset functions in auto-printing blurb Document written but unread global variable automatic display. 2nd try initial Make _get_sock_addr return correct address in kernel before 2.6.16. Automatically print written but unread globals Make nodwf test passed when CONFIG_QUOTACTL unset Uses STAPCONF_DPATH_PATH instead of a kernel version check. Simplified "rpm" target a bit. Moved tar archive creation step from "rpm" target to "dist-gzip" target. remove support for "make dist" since git-archive does as well; Examples html files moved into subdir. 2008-08-25 David Smith <dsmith@redhat.com> ChangeLog Entries Robustness improvements for the stap client/server
Diffstat (limited to 'tapset/socket.stp')
-rw-r--r--tapset/socket.stp9
1 files changed, 8 insertions, 1 deletions
diff --git a/tapset/socket.stp b/tapset/socket.stp
index 54a7c71f..3197a0e2 100644
--- a/tapset/socket.stp
+++ b/tapset/socket.stp
@@ -910,7 +910,14 @@ function _success_check(ret:long)
function _get_sock_addr:long (file:long)
%{ /* pure */
struct file *filep = (struct file *)(long)(THIS->file);
- struct socket *sockp = filep? kread(&(filep->private_data)) : NULL;
+ struct socket *sockp;
+ if (filep) {
+ struct dentry *dentry = kread(&(filep->f_dentry));
+ struct inode *inode = kread(&(dentry->d_inode));
+ sockp = &container_of(inode, struct socket_alloc, vfs_inode)->socket;
+ } else {
+ sockp = NULL;
+ }
if (sockp == NULL)
THIS->__retvalue = -1;
else