 printk("Configuring text: %s from %d:%d to %d:%d len %d\n", conf->algo, conf->from_offset, conf->from_layer, conf->to_offset, conf->to_layer, conf->pattern_len); 
static int em_text_change(struct tcf_proto *tp, void *data, int len,			  struct tcf_ematch *m){	struct text_match *tm;	struct tcf_em_text *conf = data;	struct ts_config *ts_conf;	int flags = 0;	printk("Configuring text: %s from %d:%d to %d:%d len %d\n", conf->algo, conf->from_offset,	    conf->from_layer, conf->to_offset, conf->to_layer, conf->pattern_len);	if (len < sizeof(*conf) || len < (sizeof(*conf) + conf->pattern_len))		return -EINVAL;	if (conf->from_layer > conf->to_layer)		return -EINVAL;	if (conf->from_layer == conf->to_layer &&	    conf->from_offset > conf->to_offset)		return -EINVAL;retry:	ts_conf = textsearch_prepare(conf->algo, (u8 *) conf + sizeof(*conf),				     conf->pattern_len, GFP_KERNEL, flags);	if (flags & TS_AUTOLOAD)		rtnl_lock();	if (IS_ERR(ts_conf)) {		if (PTR_ERR(ts_conf) == -ENOENT && !(flags & TS_AUTOLOAD)) {			rtnl_unlock();			flags |= TS_AUTOLOAD;			goto retry;		} else			return PTR_ERR(ts_conf);	} else if (flags & TS_AUTOLOAD) {		textsearch_destroy(ts_conf);		return -EAGAIN;	}	tm = kmalloc(sizeof(*tm), GFP_KERNEL);	if (tm == NULL) {		textsearch_destroy(ts_conf);		return -ENOBUFS;	}	tm->from_offset = conf->from_offset;	tm->to_offset   = conf->to_offset;	tm->from_layer  = conf->from_layer;	tm->to_layer    = conf->to_layer;	tm->config      = ts_conf;	m->datalen = sizeof(*tm);	m->data = (unsigned long) tm;	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d7c7ed4dbc66c5f4dfa5615cdfc5009af3b3b137/em_text.c/clean/net/sched/em_text.c